> --- linux-2.6.18.i686/fs/namespace.c  2009-03-26 11:09:57.000000000 +0000
> +++ linux-2.6.18.i686-lustre-umount-patch/fs/namespace.c      2009-03-27  
> 01:41:49.000000000 +0000
> @@ -728,10 +728,15 @@ asmlinkage long sys_umount(char __user *
>       if (!check_mnt(nd.mnt))
>               goto dput_and_out;
> 
> +     
> +     if (!memcmp(nd.mnt->mnt_sb->s_type->name, "lustre", 6) && ! 
> ve_is_super(get_exec_env()) && (flags & MNT_FORCE)) {
> +             printk(KERN_ALERT "Forced umount of lustre fs is not allowed 
> inside  
> container (%d). Overriding MNT_FORCE flag.\n", get_exec_env()->veid);
> +             flags &= (~MNT_FORCE);
> +     }
> +

As far as I see from the umount kernel code, the only place where filesystem
can see this MNT_FORCE flag is in umount_begin callback. So the better place
for such a check is in there (you can use CAP_SYS_ADMIN capability presence
to distinguish VE0 from VE).

>       retval = -EPERM;
>       if (!capable(CAP_VE_SYS_ADMIN))
>               goto dput_and_out;
> -
>       retval = do_umount(nd.mnt, flags);
>   dput_and_out:
>       path_release_on_umount(&nd);
> 
> 
> 
> _______________________________________________
> Devel mailing list
> [email protected]
> https://openvz.org/mailman/listinfo/devel
> 

_______________________________________________
Devel mailing list
[email protected]
https://openvz.org/mailman/listinfo/devel

Reply via email to