Phillip Susi | 17 Nov 03:02 2014

SSHD ( Hybrid drive ) cache pinning

Hybrid hard drives are coming to market ( I will soon have one for
testing ) that use flash to cache the rotating media.  While the drive
firmware will attempt to figure out what blocks you frequently access
randomly ( not streaming IO ), and try to cache them in the flash,
ATA8 does add commands to allow the OS to explicitly control what
blocks are cached, and it should be in a better position to know what
should be there than the heuristics in the drive firmware.

Has there been any work done yet ( or even just design ) on
implementing this in linux?

Finance Department | 16 Nov 17:23 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

Pieter Smith | 13 Nov 22:23 2014

[PATCH 25/56] fs/hfs: support compiling out splice

Compile out splice support from hfs when the splice-family of syscalls is not
supported by the system (i.e. CONFIG_SYSCALL_SPLICE is undefined).

Signed-off-by: Pieter Smith <pieter <at>>
 fs/hfs/inode.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/fs/hfs/inode.c b/fs/hfs/inode.c
index d0929bc..17c7963 100644
--- a/fs/hfs/inode.c
+++ b/fs/hfs/inode.c
 <at>  <at>  -679,7 +679,7  <at>  <at>  static const struct file_operations hfs_file_operations = {
 	.write		= new_sync_write,
 	.write_iter	= generic_file_write_iter,
 	.mmap		= generic_file_mmap,
-	.splice_read	= generic_file_splice_read,
+	SPLICE_READ_INIT(generic_file_splice_read)
 	.fsync		= hfs_file_fsync,
 	.open		= hfs_file_open,
 	.release	= hfs_file_release,


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

(Continue reading)

Steve French | 13 Nov 22:16 2014

xfstest generic/018 and ext4 defrag

I see an earlier thread about ext4 defrag problems causing this
failure on xfstest generic/018 running on ext4

generic/018 1s ... [failed, exit status 1] - output mismatch (see
    --- tests/generic/018.out 2014-11-13 11:20:05.385406288 -0800
    +++ /home/sfrench/xfstests/results//generic/018.out.bad 2014-11-13
12:33:19.317806287 -0800
     <at>  <at>  -10,10 +10,5  <at>  <at> 
     After: 1
     Write backwards sync, but contiguous - should defrag to 1 extent
     Before: 10
    -After: 1
    -Write backwards sync leaving holes - defrag should do nothing
    -Before: 16
    -After: 16

but wasn't clear whether it was fixed upstream.  It failed on two out
of three runs for me on most current ext4.  My test is on most current
Ubuntu x86_64  (and with 3.18-rc3 kernel)
I couldn't find version info for e4defrag from the command line but
other ext4 tools are reasonably recent it seems as Ubuntu packages
them e.g. EXT2FS Library version 1.42.10, 18-May-2014

Is generic xfstest 18 still broken on ext4?

Also am curious about test generic/026

generic/026  [not run] ext4 does not define maximum ACL count
(Continue reading)

David Herrmann | 13 Nov 15:14 2014

[PATCH] fs: load FS modules before pinning the mountpoint

Several pseudo file-systems create default mountpoints in /sys/fs/ or
/sys/kernel/, including:

If the given pseudo file-system is available as a module, user-space can
rely on mount(2) to load the module on-demand (assuming MODULE_ALIAS_FS).
However, in case the default mount-point is created by the file-system
itself, mount(2) will fail as it cannot pin the mountpoint.

This patch makes mount(2) load any requested file-systems before pinning
the target mount-point. This way, a file-system module can create default
mount-points in the module instead of creating them statically in the
core kernel.

Signed-off-by: David Herrmann <dh.herrmann <at>>
 fs/namespace.c | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/fs/namespace.c b/fs/namespace.c
index 5b66b2b..b1dc9f8 100644
--- a/fs/namespace.c
+++ b/fs/namespace.c
 <at>  <at>  -2565,6 +2565,7  <at>  <at>  char *copy_mount_string(const void __user *data)
 long do_mount(const char *dev_name, const char __user *dir_name,
 		const char *type_page, unsigned long flags, void *data_page)
(Continue reading)

Changman Lee | 13 Nov 12:15 2014

[PATCH 1/2] mkfs: use compact mode for data summaries

This patch is for optimization related to format
 o reduce 2 blocks for data summaries
 o reduce initial mount time after mkfs.f2fs

Signed-off-by: Changman Lee <cm224.lee <at>>
 mkfs/f2fs_format.c | 102 +++++++++++++++++++++++++++++++++--------------------
 1 file changed, 64 insertions(+), 38 deletions(-)

diff --git a/mkfs/f2fs_format.c b/mkfs/f2fs_format.c
index bf6ce00..0a9d728 100644
--- a/mkfs/f2fs_format.c
+++ b/mkfs/f2fs_format.c
 <at>  <at>  -446,6 +446,8  <at>  <at>  static int f2fs_write_check_point_pack(void)
 	u_int32_t crc = 0;
 	unsigned int i;
 	char *cp_payload = NULL;
+	char *sum_buf, *sum_buf_ptr;
+	struct f2fs_summary *sum_entry;

 	ckp = calloc(F2FS_BLKSIZE, 1);
 	if (ckp == NULL) {
 <at>  <at>  -459,6 +461,13  <at>  <at>  static int f2fs_write_check_point_pack(void)
 		return -1;

+	sum_buf = calloc(F2FS_BLKSIZE, 1);
+	if (sum == NULL) {
+		MSG(1, "\tError: Calloc Failed for summay buffer!!!\n");
+		return -1;
(Continue reading)

mitchellmiller | 13 Nov 06:41 2014

A recommendation from Mitchell Miller


Subject: YOUR Millionaire Money Machine is Here!

Hey Friend,

As you know, I’m always on the lookout for 
real ways to make decent money.       
Not just a measly $20 or $30 a day; I mean real money. 

$20,000 or $30,000 A DAY?!?! Now THAT is…


His 6 figure bank accounts now are a pretty good 
indicator that Trevor Haynes has figured it out.

Check this out -   

The Millionaire Money Machine has nothing to do with 
eBooks, websites, T-shirts, MLM, gambling, writing, 
flipping sites or any of that.

THIS isn’t about making ten buck here or there. 

It’s about making TENS OF THOUSANDS DAILY.

You’ll meet one Millionaire Money Machine user who 
(Continue reading)

Changman Lee | 13 Nov 06:34 2014

[PATCH] f2fs: add cleancache support

To use cleancache, fs must explicitly enable cleancache by calling

Signed-off-by: Changman Lee <cm224.lee <at>>
 fs/f2fs/super.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/fs/f2fs/super.c b/fs/f2fs/super.c
index 512ffd8..2ebb960 100644
--- a/fs/f2fs/super.c
+++ b/fs/f2fs/super.c
 <at>  <at>  -24,6 +24,7  <at>  <at> 
 #include <linux/blkdev.h>
 #include <linux/f2fs_fs.h>
 #include <linux/sysfs.h>
+#include <linux/cleancache.h>

 #include "f2fs.h"
 #include "node.h"
 <at>  <at>  -1144,6 +1145,8  <at>  <at>  try_onemore:
 		if (err)
 			goto free_kobj;
+	cleancache_init_fs(sb);
 	return 0;


(Continue reading)

Namjae Jeon | 13 Nov 00:41 2014

[PATCH v7 4/4] 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 | 13 Nov 00:41 2014

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

Make the fibmap call 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 | 38 +++++++++++++++++++++++++-------------
 fs/fat/fat.h   |  3 +++
 fs/fat/inode.c | 33 ++++++++++++++++++++++++++++++++-
 3 files changed, 60 insertions(+), 14 deletions(-)

diff --git a/fs/fat/cache.c b/fs/fat/cache.c
index 91ad9e1..d3dd5ba 100644
--- a/fs/fat/cache.c
+++ b/fs/fat/cache.c
 <at>  <at>  -303,6 +303,29  <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)

Namjae Jeon | 13 Nov 00:40 2014

[PATCH v7 2/4] fat: skip cluster allocation on fallocated region

Skip new cluster allocation after checking i_blocks limit in _fat_get_block,
because the blocks are already allocated in fallocated region.

Signed-off-by: Namjae Jeon <namjae.jeon <at>>
Signed-off-by: Amit Sahrawat <a.sahrawat <at>>
 fs/fat/inode.c | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/fs/fat/inode.c b/fs/fat/inode.c
index 1bd1b9b..164d2bc 100644
--- a/fs/fat/inode.c
+++ b/fs/fat/inode.c
 <at>  <at>  -123,7 +123,7  <at>  <at>  static inline int __fat_get_block(struct inode *inode, sector_t iblock,
 	struct super_block *sb = inode->i_sb;
 	struct msdos_sb_info *sbi = MSDOS_SB(sb);
 	unsigned long mapped_blocks;
-	sector_t phys;
+	sector_t phys, last_block;
 	int err, offset;

 	err = fat_bmap(inode, iblock, &phys, &mapped_blocks, create);
 <at>  <at>  -143,8 +143,14  <at>  <at>  static inline int __fat_get_block(struct inode *inode, sector_t iblock,
 		return -EIO;

+	last_block = inode->i_blocks >> (sb->s_blocksize_bits - 9);
 	offset = (unsigned long)iblock & (sbi->sec_per_clus - 1);
-	if (!offset) {
+	/*
(Continue reading)