Commit graph android_kernel_sony_sdm845/fs/namespace.c
Message SHA1
vfs: umount_tree() might be called on subtree that had never made it
__mnt_make_shortterm() in there undoes the effect of __mnt_make_longterm()
we'd done back when we set ->mnt_ns non-NULL; it should not be done to
vfsmounts that had never gone through commit_tree() and friends.  Kudos to
lczerner for catching that one...

Cc: stable@vger.kernel.org
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>

Al Viro   commited 2012-05-30 21:04:55 -04:00
63d37a84ab
brlocks/lglocks: API cleanups
lglocks and brlocks are currently generated with some complicated macros
in lglock.h.  But there's no reason to not just use common utility
functions and put all the data into a common data structure.

In preparation, this patch changes the API to look more like normal
function calls with pointers, not magic macros.

The patch is rather large because I move over all users in one go to keep
it bisectable.  This impacts the VFS somewhat in terms of lines changed.
But no actual behaviour change.

[akpm@linux-foundation.org: checkpatch fixes]
Signed-off-by: Andi Kleen <ak@linux.intel.com>
Cc: Al Viro <viro@zeniv.linux.org.uk>
Cc: Rusty Russell <rusty@rustcorp.com.au>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>

Andi Kleen   authored and   Al Viro   commited 2012-05-29 23:28:41 -04:00
962830df36
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial: (53 commits)
  Kconfig: acpi: Fix typo in comment.
  misc latin1 to utf8 conversions
  devres: Fix a typo in devm_kfree comment
  btrfs: free-space-cache.c: remove extra semicolon.
  fat: Spelling s/obsolate/obsolete/g
  SCSI, pmcraid: Fix spelling error in a pmcraid_err() call
  tools/power turbostat: update fields in manpage
  mac80211: drop spelling fix
  types.h: fix comment spelling for 'architectures'
  typo fixes: aera -> area, exntension -> extension
  devices.txt: Fix typo of 'VMware'.
  sis900: Fix enum typo 'sis900_rx_bufer_status'
  decompress_bunzip2: remove invalid vi modeline
  treewide: Fix comment and string typo 'bufer'
  hyper-v: Update MAINTAINERS
  treewide: Fix typos in various parts of the kernel, and fix some comments.
  clockevents: drop unknown Kconfig symbol GENERIC_CLOCKEVENTS_MIGR
  gpio: Kconfig: drop unknown symbol 'CS5535_GPIO'
  leds: Kconfig: Fix typo 'D2NET_V2'
  sound: Kconfig: drop unknown symbol ARCH_CLPS7500
  ...

Fix up trivial conflicts in arch/powerpc/platforms/40x/Kconfig (some new
kconfig additions, close to removed commented-out old ones)

Linus Torvalds   commited 2012-01-08 13:21:22 -08:00
98793265b4
vfs: prevent remount read-only if pending removes
If there are any inodes on the super block that have been unlinked
(i_nlink == 0) but have not yet been deleted then prevent the
remounting the super block read-only.

Reported-by: Toshiyuki Okajima <toshi.okajima@jp.fujitsu.com>
Signed-off-by: Miklos Szeredi <mszeredi@suse.cz>
Tested-by: Toshiyuki Okajima <toshi.okajima@jp.fujitsu.com>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>

Miklos Szeredi   authored and   Al Viro   commited 2012-01-06 23:20:13 -05:00
8e8b87964b
vfs: protect remounting superblock read-only
Currently remouting superblock read-only is racy in a major way.

With the per mount read-only infrastructure it is now possible to
prevent most races, which this patch attempts.

Before starting the remount read-only, iterate through all mounts
belonging to the superblock and if none of them have any pending
writes, set sb->s_readonly_remount.  This indicates that remount is in
progress and no further write requests are allowed.  If the remount
succeeds set MS_RDONLY and reset s_readonly_remount.

If the remounting is unsuccessful just reset s_readonly_remount.
This can result in transient EROFS errors, despite the fact the
remount failed.  Unfortunately hodling off writes is difficult as
remount itself may touch the filesystem (e.g. through load_nls())
which would deadlock.

A later patch deals with delayed writes due to nlink going to zero.

Signed-off-by: Miklos Szeredi <mszeredi@suse.cz>
Tested-by: Toshiyuki Okajima <toshi.okajima@jp.fujitsu.com>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>

Miklos Szeredi   authored and   Al Viro   commited 2012-01-06 23:20:12 -05:00
4ed5e82fe7
vfs: keep list of mounts for each superblock
Keep track of vfsmounts belonging to a superblock.  List is protected
by vfsmount_lock.

Signed-off-by: Miklos Szeredi <mszeredi@suse.cz>
Tested-by: Toshiyuki Okajima <toshi.okajima@jp.fujitsu.com>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>

Miklos Szeredi   authored and   Al Viro   commited 2012-01-06 23:20:12 -05:00
39f7c4db1d
vfs: switch ->show_options() to struct dentry *
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>

Al Viro   commited 2012-01-06 23:19:54 -05:00
34c80b1d93
vfs: trim includes a bit
[folded fix for missing magic.h from Tetsuo Handa]

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>

Al Viro   commited 2012-01-03 22:57:13 -05:00
d10577a8d8
switch mnt_namespace ->root to struct mount
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>

Al Viro   commited 2012-01-03 22:57:13 -05:00
be08d6d260
vfs: take /proc/*/mounts and friends to fs/proc_namespace.c
rationale: that stuff is far tighter bound to fs/namespace.c than to
the guts of procfs proper.

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>

Al Viro   commited 2012-01-03 22:57:13 -05:00
0226f4923f
vfs: opencode mntget() mnt_set_mountpoint()
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>

Al Viro   commited 2012-01-03 22:57:12 -05:00
3a2393d71d
vfs: spread struct mount - remaining argument of next_mnt()
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>

Al Viro   commited 2012-01-03 22:57:12 -05:00
909b0a88ef
vfs: move fsnotify junk to struct mount
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>

Al Viro   commited 2012-01-03 22:57:12 -05:00
c63181e6b6
vfs: move mnt_devname
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>

Al Viro   commited 2012-01-03 22:57:11 -05:00
52ba1621de
vfs: move mnt_list to struct mount
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>

Al Viro   commited 2012-01-03 22:57:11 -05:00
1a4eeaf2a8
vfs: switch pnode.h macros to struct mount *
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>

Al Viro   commited 2012-01-03 22:57:11 -05:00
fc7be130c7
vfs: move the rest of int fields to struct mount
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>

Al Viro   commited 2012-01-03 22:57:10 -05:00
863d684f94
vfs: mnt_id/mnt_group_id moved
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>

Al Viro   commited 2012-01-03 22:57:10 -05:00
15169fe784
vfs: mnt_ns moved to struct mount
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>

Al Viro   commited 2012-01-03 22:57:09 -05:00
143c8c91ce
vfs: spread struct mount - mntput_no_expire
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>

Al Viro   commited 2012-01-03 22:57:09 -05:00
900148dcac
vfs: spread struct mount - do_add_mount and graft_tree
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>

Al Viro   commited 2012-01-03 22:57:09 -05:00
95bc5f25c1
vfs: take mnt_share/mnt_slave/mnt_slave_list and mnt_expire to struct mount
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>

Al Viro   commited 2012-01-03 22:57:08 -05:00
6776db3d32
vfs: and now we can make ->mnt_master point to struct mount
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>

Al Viro   commited 2012-01-03 22:57:08 -05:00
32301920f4
vfs: take mnt_master to struct mount
make IS_MNT_SLAVE take struct mount * at the same time

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>

Al Viro   commited 2012-01-03 22:57:08 -05:00
d10e8def07
vfs: spread struct mount - remaining argument of mnt_set_mountpoint()
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>

Al Viro   commited 2012-01-03 22:57:07 -05:00
14cf1fa8f5
vfs: spread struct mount - propagate_mnt()
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>

Al Viro   commited 2012-01-03 22:57:07 -05:00
a8d56d8e4f
vfs: spread struct mount - get_dominating_id / do_make_slave
next pile of horrors, similar to mnt_parent one; this time it's
mnt_master.

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>

Al Viro   commited 2012-01-03 22:57:06 -05:00
6fc7871fed
vfs: take mnt_child/mnt_mounts to struct mount
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>

Al Viro   commited 2012-01-03 22:57:06 -05:00
6b41d536f7
vfs: all counters taken to struct mount
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>

Al Viro   commited 2012-01-03 22:57:06 -05:00
68e8a9feab
vfs: spread struct mount - work with counters
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>

Al Viro   commited 2012-01-03 22:57:05 -05:00
83adc75322
vfs: move mnt_mountpoint to struct mount
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>

Al Viro   commited 2012-01-03 22:57:05 -05:00
a73324da7a
vfs: now it can be done - make mnt_parent point to struct mount
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>

Al Viro   commited 2012-01-03 22:57:05 -05:00
0714a53380
vfs: mnt_parent moved to struct mount
the second victim...

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>

Al Viro   commited 2012-01-03 22:57:04 -05:00
3376f34fff
vfs: spread struct mount - is_path_reachable
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>

Al Viro   commited 2012-01-03 22:57:04 -05:00
643822b41e
vfs: spread struct mount - mnt_has_parent
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>

Al Viro   commited 2012-01-03 22:57:04 -05:00
676da58df7
vfs: spread struct mount - do_umount/propagate_mount_busy
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>

Al Viro   commited 2012-01-03 22:57:03 -05:00
1ab5973862
vfs: spread struct mount mnt_set_mountpoint child argument
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>

Al Viro   commited 2012-01-03 22:57:03 -05:00
44d964d609
vfs: spread struct mount - clone_mnt/copy_tree argument
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>

Al Viro   commited 2012-01-03 22:57:03 -05:00
87129cc0e3
vfs: spread struct mount - shrink_submounts/select_submounts
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>

Al Viro   commited 2012-01-03 22:57:02 -05:00
692afc312b
vfs: spread struct mount - umount_tree argument
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>

Al Viro   commited 2012-01-03 22:57:02 -05:00
761d5c38eb
vfs: the first spoils - mnt_hash moved
taken out of struct vfsmount into struct mount

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>

Al Viro   commited 2012-01-03 22:57:02 -05:00
1b8e5564b9
vfs: spread struct mount to remaining users of ->mnt_hash
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>

Al Viro   commited 2012-01-03 22:57:01 -05:00
d5e50f74dd
vfs: spread struct mount - clone_mnt/copy_tree result
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>

Al Viro   commited 2012-01-03 22:57:01 -05:00
cb338d06e9
vfs: spread struct mount - change_mnt_propagation/set_mnt_shared
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>

Al Viro   commited 2012-01-03 22:57:01 -05:00
0f0afb1dcf
vfs: spread struct mount - alloc_vfsmnt/free_vfsmnt/mnt_alloc_id/mnt_free_id
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>

Al Viro   commited 2012-01-03 22:57:00 -05:00
b105e270b4
vfs: spread struct mount - tree_contains_unbindable
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>

Al Viro   commited 2012-01-03 22:57:00 -05:00
cbbe362cd6
vfs: spread struct mount - attach_recursive_mnt
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>

Al Viro   commited 2012-01-03 22:57:00 -05:00
0fb54e5056
vfs: spread struct mount - mount group id handling
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>

Al Viro   commited 2012-01-03 22:56:59 -05:00
4b8b21f4fe
vfs: spread struct mount - commit_tree
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>

Al Viro   commited 2012-01-03 22:56:59 -05:00
4b2619a571
vfs: spread struct mount - attach_mnt/detach_mnt
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>

Al Viro   commited 2012-01-03 22:56:59 -05:00
419148da6e