Eric W. Biederman | 30 Sep 03:04 2014

[PATCH] umount.2: Correct the description of MNT_DETACH

I recently realized that I had been reasoning improperly about what
umount(MNT_DETACH) did based on an insufficient description in
the umount.2 man page, that matched my intuition but not the

When there are no submounts MNT_DETACH is essentially harmless to
applications.  Where there are submounts MNT_DETACH changes what
is visible to applications using the detach directories.

Signed-off-by: Eric W. Biederman <ebiederm <at>>
 man2/umount.2 | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/man2/umount.2 b/man2/umount.2
index 5ff88152c738..aea39d8306fe 100644
--- a/man2/umount.2
+++ b/man2/umount.2
 <at>  <at>  -66,9 +66,10  <at>  <at>  This can cause data loss.
 (Only for NFS mounts.)
 .BR MNT_DETACH " (since Linux 2.4.11)"
-Perform a lazy unmount: make the mount point unavailable for
-new accesses, and actually perform the unmount when the mount point
-ceases to be busy.
+Perform a lazy unmount: make the mount point unavailable for new
+accesses, immediately disconnect the filesystem and all filesystems
+mounted below it from each other and from the mount table, and
+actually perform the unmount when the mount point ceases to be busy.
(Continue reading)

Andy Lutomirski | 30 Sep 01:45 2014

Removing shared subtrees?

As far as I know, shared subtrees in recursive bind mounts are a
misfeature that existed for the sole purpose of allowing recursive
binds + chroot to emulate mount namespaces.  But we have mount
namespaces, so what are they for?

They're totally fsked up.  For example, don't try this on a live system:

# mount --make-rshared /
# mount --rbind / /mnt
# umount -l /mnt

It will unmount *everything*.  On Fedora, you don't even need the
--make-rshared part.  WTF?

Can we just remove the feature entirely in linux-next and see if
anyone complains?  I'm all for propagation across mount namespaces,
but I suspect that, at the very least, there is no legitimate reason
whatsoever for mounts to propagate from a recursive bind mount back to
the origin.

IOW, can we kill shared mounts and just keep private and slave mounts?



Andy Lutomirski
AMA Capital Management, LLC
To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in
the body of a message to majordomo <at>
(Continue reading)

Benjamin Marzinski | 29 Sep 19:02 2014

[RFC] gfs2: update freeze code to use freeze/thaw_super on all nodes

The current gfs2 freezing code is considerably more complicated than it
should be because it doesn't use the vfs freezing code on any node except
the one that begins the freeze.  This is because it needs to acquire a
cluster glock before calling the vfs code to prevent a deadlock, and
without the new prepare_freeze/prepare_thaw hooks, that was impossible. To
deal with the issue, gfs2 had to do some hacky locking tricks to make sure
that a frozen node couldn't be holding on a lock it needed to do the
unfreeze ioctl.

This patch makes use of the new hooks to simply the gfs2 locking code.  Now,
all the nodes in the cluster freeze and thaw in exactly the same way. Every
node in the cluster caches the freeze glock in the shared state.  The new
prepare_freeze hook allows the freezing node to grab this freeze glock in
the exclusive state without first calling freeze_super. All the nodes in
the cluster see this lock change, and call freeze_super. The vfs locking
code guarantees that the nodes can't get stuck holding the glocks necessary
to unfreeze the system.  To unfreeze, the freezing node uses the new
prepare_thaw hook to drop the freeze glock.  Again, all the nodes notice
this, reacquire the glock in shared mode and call thaw_super.

Signed-off-by: Benjamin Marzinski <bmarzins <at>>
 fs/gfs2/glops.c      |  26 ++++++-------
 fs/gfs2/glops.h      |   2 +
 fs/gfs2/incore.h     |  15 +++++---
 fs/gfs2/inode.c      |  40 +++++---------------
 fs/gfs2/log.c        |  29 ++++++---------
 fs/gfs2/main.c       |  11 +++++-
 fs/gfs2/ops_fstype.c |  16 ++------
 fs/gfs2/super.c      | 101 ++++++++++++++++++++++++++++++++++-----------------
(Continue reading)

Thanos Makatos | 29 Sep 18:24 2014

invalidate the buffer heads of a block device

I'm looking for ways to achieve _read_ caching of a block device (usually
iSCSI) that is attached to multiple hosts. The problem is that sometimes there
will be some writes on that block device in a particular, known host using
O_DIRECT, and that requires all other hosts to invalidate their buffer caches
for that block device. I'd prefer to use standard tools/procedures rather than
hacking things, but if I do have to implement something to solve this problem
I'd prefer it to be something that can be accepted upstream.

It looks like that closing the block device guarantees that the buffer cache is
invalidated, and I can guarantee that all _my_ processes close the block device
to achieve this. However, if there is at least one other process I don't know
of that is keeping an open file handle against that block device, the buffer
cache won't be invalidated, and that will result in corruption. So this
solution doesn't seem to work.

I had a look at the BLKFLSBUF ioctl, which seems to be designed to do the job,
except that it doesn't work if a process has memory mapped the block device,
and AFAIK there's no way to disallow memory mapping of a block device. Again,
that looks like a deal-breaker.

If the above observations are correct, it seems that I have to either extend
BLKFLSBUF to some invalidate such memory maps (I'm completely ignorant in that
field, is it even possible?), or look for other solutions.

Could some configuration of dm-cache, bcache, or some other component solve my
problem? posix_fadvise with POSIX_FADV_DONTNEED seems to be just a hint to the
kernel, there are no guarantees that cached data will be discarded.  I've also
though of using a virtual block device driver that exclusively opens the
actual network block device and lets user-space applications use the
virtualised one so that I have more control and enforce things.
(Continue reading)

Jinghao Printing - CHINA | 29 Sep 08:35 2014

color box, display box, corrugated box, color card, blister card, color sleeve, hang tag, label

Hi, this is David Wu from Shanghai, China.
We are a printing company, we can print color box, corrugated box,
label, hang tag etc.
Please let me know if you need these.

I will send you the website then.

Best regards,
David Wu
To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in
the body of a message to majordomo <at>
More majordomo info at

小钱 | 23 Sep 16:32 2014

用这个平台发短信,这就对了 ttwmjescy



(Continue reading)

小白 | 27 Sep 05:45 2014

用了一次你就会觉得是最好的短信发送平台 rqrkr


(Continue reading)

Finance Department | 26 Sep 16:51 2014


Dear Recipient,

You have been awarded the sum of  8,000,000.00 (Eight Million Pounds sterling) with reference number
77100146 by office of the ministry of finance UK.Send us your personal details to deliver your funds.

Gloria Peter
To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in
the body of a message to majordomo <at>
More majordomo info at

Steve Dickson | 26 Sep 16:05 2014

ANNOUNCE: nfs-utils-1.3.1 released.


The major feature in this release is the addition 
of gssproxy support in the systemd scripts. 

When gssproxy is installed and and a key tab 
(/etc/krb5.keytab) exists, the gssproxy daemon 
will be started and the NFS server will use 
that daemon to manage the GSSAPI creds instead 
of rpc.svcgssd.

Rpc.svcgssd will continue to be used when gssproxy 
does not exist and a key tab does. 

One thing not addressed in this release is the tcp wrapper
changes to the mountd man page. I'm going to let distros
deal with that as they may.... I'm in favor of ripping 
all that code out, but I didn't want that to get in the 
way of this release.

The tarballs can be found in

The change log is in

(Continue reading)

Namjae Jeon | 25 Sep 07:31 2014

[PATCH v5 5/5] Documentation/filesystems/vfat.txt: update the limitation for fat fallocate

Update the limitation for fat fallocate.

Signed-off-by: Namjae Jeon <namjae.jeon <at>>
Signed-off-by: Amit Sahrawat <a.sahrawat <at>>
 Documentation/filesystems/vfat.txt | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/Documentation/filesystems/vfat.txt b/Documentation/filesystems/vfat.txt
index ce1126a..223c321 100644
--- a/Documentation/filesystems/vfat.txt
+++ b/Documentation/filesystems/vfat.txt
 <at>  <at>  -180,6 +180,16  <at>  <at>  dos1xfloppy  -- If set, use a fallback default BIOS Parameter Block

 <bool>: 0,1,yes,no,true,false

+* The fallocated region of file is discarded at umount/evict time
+  when using fallocate with FALLOC_FL_KEEP_SIZE.
+  So, User should assume that fallocated region can be discarded at
+  last close if there is memory pressure resulting in eviction of
+  the inode from the memory. As a result, for any dependency on
+  the fallocated region, user should make sure to recheck fallocate
+  after reopening the file.
 * Need to get rid of the raw scanning stuff.  Instead, always use

(Continue reading)

Namjae Jeon | 25 Sep 07:31 2014

[PATCH v5 4/5] fat: permit to return phy block number by fibmap in fallocated region

Make the fibmap call the return the proper physical block number for any
offset request in the fallocated range.

Signed-off-by: Namjae Jeon <namjae.jeon <at>>
Signed-off-by: Amit Sahrawat <a.sahrawat <at>>
 fs/fat/cache.c | 40 +++++++++++++++++++++++++++-------------
 fs/fat/fat.h   |  3 +++
 fs/fat/inode.c | 35 ++++++++++++++++++++++++++++++++++-
 3 files changed, 64 insertions(+), 14 deletions(-)

diff --git a/fs/fat/cache.c b/fs/fat/cache.c
index 91ad9e1..7010061 100644
--- a/fs/fat/cache.c
+++ b/fs/fat/cache.c
 <at>  <at>  -303,6 +303,31  <at>  <at>  static int fat_bmap_cluster(struct inode *inode, int cluster)
 	return dclus;

+int fat_get_mapped_cluster(struct inode *inode, sector_t sector,
+			   sector_t last_block,
+			   unsigned long *mapped_blocks, sector_t *bmap)
+	struct super_block *sb = inode->i_sb;
+	struct msdos_sb_info *sbi = MSDOS_SB(sb);
+	int cluster, offset;
+	cluster = sector >> (sbi->cluster_bits - sb->s_blocksize_bits);
+	offset  = sector & (sbi->sec_per_clus - 1);
+	cluster = fat_bmap_cluster(inode, cluster);
(Continue reading)