diff options
author | Justin Riley <justin.t.riley@gmail.com> | 2014-06-12 10:37:49 -0400 |
---|---|---|
committer | Justin Riley <justin.t.riley@gmail.com> | 2014-06-12 10:37:49 -0400 |
commit | c8f938df1547888ca76e65912d70c4293f6ee70c (patch) | |
tree | 46352a819c7ce0883190fd4b5f02c53acc73dfed /sys-fs/aufs3/files | |
parent | vmware-modules: fix for kernel 3.15.0 (diff) | |
download | jtriley-c8f938df1547888ca76e65912d70c4293f6ee70c.tar.gz jtriley-c8f938df1547888ca76e65912d70c4293f6ee70c.tar.bz2 jtriley-c8f938df1547888ca76e65912d70c4293f6ee70c.zip |
aufs3: fix dodoc error tmpfs-{ibitmap->idr}
Diffstat (limited to 'sys-fs/aufs3/files')
-rw-r--r-- | sys-fs/aufs3/files/README.gentoo | 20 | ||||
-rw-r--r-- | sys-fs/aufs3/files/pax-3.11.patch | 89 | ||||
-rw-r--r-- | sys-fs/aufs3/files/pax-3.patch | 90 |
3 files changed, 199 insertions, 0 deletions
diff --git a/sys-fs/aufs3/files/README.gentoo b/sys-fs/aufs3/files/README.gentoo new file mode 100644 index 0000000..c203912 --- /dev/null +++ b/sys-fs/aufs3/files/README.gentoo @@ -0,0 +1,20 @@ +There several other patches in aufs3. They are all +optional. When you meet some problems, they will help you. You can find them +in the documentation directory. + + - aufs3-loopback.patch + Supports a nested loopback mount in a branch-fs. This patch is + unnecessary until aufs produces a message such like "you may want to try + another patch for loopback file". + + - vfs-ino.patch + Modifies a system global kernel internal function get_next_ino() in + order to stop assigning 0 for an inode-number. Not directly related to + aufs, but recommended generally. + + - tmpfs-ibitmap.patch + Keeps the tmpfs inode number as the lowest value. Effective to reduce + the size of aufs XINO files for tmpfs branch. Also it prevents the + duplication of inode number, which is important for backup + tools, aubrsync or other utilities. When you find aufs XINO files for + tmpfs branch growing too much, try this patch. diff --git a/sys-fs/aufs3/files/pax-3.11.patch b/sys-fs/aufs3/files/pax-3.11.patch new file mode 100644 index 0000000..cf216a5 --- /dev/null +++ b/sys-fs/aufs3/files/pax-3.11.patch @@ -0,0 +1,89 @@ +--- a/fs/aufs/dynop.c 2012-10-09 15:41:32.652989534 -0400 ++++ b/fs/aufs/dynop.c 2012-10-09 15:41:58.562989820 -0400 +@@ -149,9 +149,11 @@ + #define DySet(func, dst, src, h_op, h_sb) do { \ + DyDbgInc(cnt); \ + if (h_op->func) { \ +- if (src.func) \ +- dst.func = src.func; \ +- else \ ++ if (src.func) { \ ++ pax_open_kernel(); \ ++ *(void **)&dst.func = src.func; \ ++ pax_close_kernel(); \ ++ } else \ + AuDbg("%s %s\n", au_sbtype(h_sb), #func); \ + } \ + } while (0) +@@ -159,7 +161,9 @@ + #define DySetForce(func, dst, src) do { \ + AuDebugOn(!src.func); \ + DyDbgInc(cnt); \ +- dst.func = src.func; \ ++ pax_open_kernel(); \ ++ *(void **)&dst.func = src.func; \ ++ pax_close_kernel(); \ + } while (0) + + #define DySetAop(func) \ +@@ -266,15 +270,17 @@ + */ + static void dy_adx(struct au_dyaop *dyaop, int do_dx) + { ++ pax_open_kernel(); + if (!do_dx) { +- dyaop->da_op.direct_IO = NULL; +- dyaop->da_op.get_xip_mem = NULL; ++ *(void **)&dyaop->da_op.direct_IO = NULL; ++ *(void **)&dyaop->da_op.get_xip_mem = NULL; + } else { +- dyaop->da_op.direct_IO = aufs_aop.direct_IO; +- dyaop->da_op.get_xip_mem = aufs_aop.get_xip_mem; ++ *(void **)&dyaop->da_op.direct_IO = aufs_aop.direct_IO; ++ *(void **)&dyaop->da_op.get_xip_mem = aufs_aop.get_xip_mem; + if (!dyaop->da_get_xip_mem) +- dyaop->da_op.get_xip_mem = NULL; ++ *(void **)&dyaop->da_op.get_xip_mem = NULL; + } ++ pax_close_kernel(); + } + + static struct au_dyaop *dy_aget(struct au_branch *br, +--- a/fs/aufs/f_op_sp.c 2012-10-09 15:41:32.652989534 -0400 ++++ b/fs/aufs/f_op_sp.c 2012-10-09 15:41:58.562989820 -0400 +@@ -104,7 +104,7 @@ + static int aufs_open_sp(struct inode *inode, struct file *file); + static struct au_sp_fop { + int done; +- struct file_operations fop; /* not 'const' */ ++ file_operations_no_const fop; /* not 'const' */ + spinlock_t spin; + } au_sp_fop[AuSp_Last] = { + [AuSp_FIFO] = { +@@ -157,8 +157,10 @@ + h_file = au_hf_top(file); + spin_lock(&p->spin); + if (!p->done) { +- p->fop = *h_file->f_op; ++ pax_open_kernel(); ++ memcpy((void *)&p->fop, h_file->f_op, sizeof(p->fop)); + p->fop.owner = THIS_MODULE; ++ pax_close_kernel(); + if (p->fop.aio_read) + p->fop.aio_read = aufs_aio_read_sp; + if (p->fop.aio_write) +--- a/fs/aufs/sysfs.c 2013-10-20 17:08:37.000000000 -0400 ++++ b/fs/aufs/sysfs.c 2013-10-19 17:08:29.000000000 -0400 +@@ -233,8 +233,10 @@ + for (i = 0; i < ARRAY_SIZE(br->br_sysfs); i++) { + attr = &br_sysfs->attr; + sysfs_attr_init(attr); +- attr->name = br_sysfs->name; +- attr->mode = S_IRUGO; ++ pax_open_kernel(); ++ *(void **)&attr->name = br_sysfs->name; ++ *(void **)&attr->mode = S_IRUGO; ++ pax_close_kernel(); + br_sysfs++; + } + } diff --git a/sys-fs/aufs3/files/pax-3.patch b/sys-fs/aufs3/files/pax-3.patch new file mode 100644 index 0000000..584fa6a --- /dev/null +++ b/sys-fs/aufs3/files/pax-3.patch @@ -0,0 +1,90 @@ +--- a/fs/aufs/dynop.c 2012-10-09 15:41:32.652989534 -0400 ++++ b/fs/aufs/dynop.c 2012-10-09 15:41:58.562989820 -0400 +@@ -149,9 +149,11 @@ + #define DySet(func, dst, src, h_op, h_sb) do { \ + DyDbgInc(cnt); \ + if (h_op->func) { \ +- if (src.func) \ +- dst.func = src.func; \ +- else \ ++ if (src.func) { \ ++ pax_open_kernel(); \ ++ *(void **)&dst.func = src.func; \ ++ pax_close_kernel(); \ ++ } else \ + AuDbg("%s %s\n", au_sbtype(h_sb), #func); \ + } \ + } while (0) +@@ -159,7 +161,9 @@ + #define DySetForce(func, dst, src) do { \ + AuDebugOn(!src.func); \ + DyDbgInc(cnt); \ +- dst.func = src.func; \ ++ pax_open_kernel(); \ ++ *(void **)&dst.func = src.func; \ ++ pax_close_kernel(); \ + } while (0) + + #define DySetAop(func) \ +@@ -266,15 +270,17 @@ + */ + static void dy_adx(struct au_dyaop *dyaop, int do_dx) + { ++ pax_open_kernel(); + if (!do_dx) { +- dyaop->da_op.direct_IO = NULL; +- dyaop->da_op.get_xip_mem = NULL; ++ *(void **)&dyaop->da_op.direct_IO = NULL; ++ *(void **)&dyaop->da_op.get_xip_mem = NULL; + } else { +- dyaop->da_op.direct_IO = aufs_aop.direct_IO; +- dyaop->da_op.get_xip_mem = aufs_aop.get_xip_mem; ++ *(void **)&dyaop->da_op.direct_IO = aufs_aop.direct_IO; ++ *(void **)&dyaop->da_op.get_xip_mem = aufs_aop.get_xip_mem; + if (!dyaop->da_get_xip_mem) +- dyaop->da_op.get_xip_mem = NULL; ++ *(void **)&dyaop->da_op.get_xip_mem = NULL; + } ++ pax_close_kernel(); + } + + static struct au_dyaop *dy_aget(struct au_branch *br, +--- a/fs/aufs/f_op_sp.c 2012-10-09 15:41:32.652989534 -0400 ++++ b/fs/aufs/f_op_sp.c 2012-10-09 15:41:58.562989820 -0400 +@@ -104,7 +104,7 @@ + static int aufs_open_sp(struct inode *inode, struct file *file); + static struct au_sp_fop { + int done; +- struct file_operations fop; /* not 'const' */ ++ file_operations_no_const fop; /* not 'const' */ + spinlock_t spin; + } au_sp_fop[AuSp_Last] = { + [AuSp_FIFO] = { +@@ -157,8 +157,10 @@ + h_file = au_hf_top(file); + spin_lock(&p->spin); + if (!p->done) { +- p->fop = *h_file->f_op; ++ pax_open_kernel(); ++ memcpy((void *)&p->fop, h_file->f_op, sizeof(p->fop)); + p->fop.owner = THIS_MODULE; ++ pax_close_kernel(); + if (p->fop.aio_read) + p->fop.aio_read = aufs_aio_read_sp; + if (p->fop.aio_write) +diff -Naur linux-3.8.3-pentoo/fs/aufs/sysfs.c linux-3.8.3-pentoo-aufsfix/fs/aufs/sysfs.c +--- linux-3.8.3-pentoo/fs/aufs/sysfs.c 2013-04-29 00:07:50.478827567 -0400 ++++ linux-3.8.3-pentoo-aufsfix/fs/aufs/sysfs.c 2013-04-28 23:46:23.724793109 -0400 +@@ -208,8 +208,10 @@ + struct attribute *attr = &br->br_attr; + + sysfs_attr_init(attr); +- attr->name = br->br_name; +- attr->mode = S_IRUGO; ++ pax_open_kernel(); ++ *(void **)&attr->name = br->br_name; ++ *(void **)&attr->mode = S_IRUGO; ++ pax_close_kernel(); + } + + void sysaufs_brs_del(struct super_block *sb, aufs_bindex_t bindex) |