[Unionfs] 2.3.3 will not compile
Erez Zadok
ezk at cs.sunysb.edu
Sat May 3 15:58:58 EDT 2008
In message <38973.122.199.1.190.1209358212.squirrel at webmail-srv1.servage.net>, bkauler at goosee.com writes:
> I have downloaded kernel 2.6.25-git11, which is a snapshot dated
> 27th April. I got this as it seems to have many bugfixes from
> the 2.6.25 release on the 17th.
>
> I patched with squashfs 3.3 and unionfs 2.3.3.
>
> Compile stops with this error message:
>
> CC [M] fs/unionfs/super.o
> fs/unionfs/super.c: In function 'unionfs_umount_begin':
> fs/unionfs/super.c:989: warning: passing argument 1 of
> 'lower_sb->s_op->umount_begin' from incompatible pointer type
> fs/unionfs/super.c:989: error: too many arguments to function
> 'lower_sb->s_op->umount_begin'
> fs/unionfs/super.c: At top level:
> fs/unionfs/super.c:1052: warning: initialization from incompatible pointer
> type
> make[2]: *** [fs/unionfs/super.o] Error 1
> make[1]: *** [fs/unionfs] Error 2
> make: *** [fs] Error 2
>
> Regards,
> Barry Kauler
Barry,
2.6.26-rc1 was released moments ago, so hopefully 2.6.26 will start
stabilizing from now on, and there'd be less confusion online wrt to what
x.y.z-gitNN really belongs to.
Anyway, below is a patch for the changed ->umount_begin interface. It
tested ok on my basic unionfs regressions. I'm going to start extensive
testing on 2.6.26-rc1 now, including for this patch below. I'll release the
next unionfs once I've run more tests on -rc1.
Cheers,
Erez.
diff --git a/fs/unionfs/super.c b/fs/unionfs/super.c
index 82b4045..b110760 100644
--- a/fs/unionfs/super.c
+++ b/fs/unionfs/super.c
@@ -961,32 +961,21 @@ static int unionfs_write_inode(struct inode *inode, int sync)
* Used only in nfs, to kill any pending RPC tasks, so that subsequent
* code can actually succeed and won't leave tasks that need handling.
*/
-static void unionfs_umount_begin(struct vfsmount *mnt, int flags)
+static void unionfs_umount_begin(struct super_block *sb)
{
- struct super_block *sb, *lower_sb;
- struct vfsmount *lower_mnt;
+ struct super_block *lower_sb;
int bindex, bstart, bend;
- if (!(flags & MNT_FORCE))
- /*
- * we are not being MNT_FORCE'd, therefore we should emulate
- * old behavior
- */
- return;
-
- sb = mnt->mnt_sb;
-
unionfs_read_lock(sb, UNIONFS_SMUTEX_CHILD);
bstart = sbstart(sb);
bend = sbend(sb);
for (bindex = bstart; bindex <= bend; bindex++) {
- lower_mnt = unionfs_lower_mnt_idx(sb->s_root, bindex);
lower_sb = unionfs_lower_super_idx(sb, bindex);
- if (lower_mnt && lower_sb && lower_sb->s_op &&
+ if (lower_sb && lower_sb->s_op &&
lower_sb->s_op->umount_begin)
- lower_sb->s_op->umount_begin(lower_mnt, flags);
+ lower_sb->s_op->umount_begin(lower_sb);
}
unionfs_read_unlock(sb);
More information about the unionfs
mailing list