[GIT PULL] libnvdimm fixes for 4.12-rc2

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Linus, please pull from:

  git://git.kernel.org/pub/scm/linux/kernel/git/nvdimm/nvdimm libnvdimm-for-next

...to receive a couple compile fixes for 4.12-rc2.

With the removal of the -+AD4-direct+AF8-access() method from
block+AF8-device+AF8-operations in favor of a new dax+AF8-device +- dax+AF8-operations
we broke 2 configurations. The CONFIG+AF8-BLOCK+AD0-n case is fixed by
compiling out the block+-dax helpers in the dax core. Configurations
with FS+AF8-DAX+AD0-n EXT4+AD0-y / XFS+AD0-y and DAX+AD0-m fail due to the helpers the
builtin filesystem needs being in a module, so we stub out the helpers
in the FS+AF8-DAX+AD0-n case.

The following changes since commit 2ea659a9ef488125eb46da6eb571de5eae5c43f6:

  Linux 4.12-rc1 (2017-05-13 13:19:49 -0700)

are available in the git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/nvdimm/nvdimm libnvdimm-for-next

for you to fetch changes up to f5705aa8cfed142d980ecac12bee0d81b756479e:

  dax, xfs, ext4: compile out iomap-dax paths in the FS+AF8-DAX+AD0-n case (2017-05-13 17:52:16 -0700)

----------------------------------------------------------------
Dan Williams (2):
      dax: fix false CONFIG+AF8-BLOCK dependency
      dax, xfs, ext4: compile out iomap-dax paths in the FS+AF8-DAX+AD0-n case

 drivers/dax/super.c +AHw-  2 +-+-
 fs/ext2/inode.c     +AHw-  4 +-+---
 fs/ext4/inode.c     +AHw-  4 +-+---
 fs/xfs/xfs+AF8-iomap.c  +AHw-  4 +-+---
 include/linux/dax.h +AHw- 34 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+--------
 5 files changed, 35 insertions(+-), 13 deletions(-)

commit 9d109081c261d87fc84e0cce245796796ae4c460
Author: Dan Williams +ADw-dan.j.williams+AEA-intel.com+AD4-
Date:   Sat May 13 16:18:21 2017 -0700

    dax: fix false CONFIG+AF8-BLOCK dependency
    
    In the BLOCK+AD0-n case the dax core does not need to / must not emit the
    block-device-dax helpers. Otherwise it leads to compile errors.
    
    Cc: Arnd Bergmann +ADw-arnd+AEA-arndb.de+AD4-
    Reported-by: Fabian Frederick +ADw-fabf+AEA-skynet.be+AD4-
    Fixes: ef51042472f5 (+ACI-block, dax: move 'select DAX' from BLOCK to FS+AF8-DAX+ACI-)
    Signed-off-by: Dan Williams +ADw-dan.j.williams+AEA-intel.com+AD4-

commit f5705aa8cfed142d980ecac12bee0d81b756479e
Author: Dan Williams +ADw-dan.j.williams+AEA-intel.com+AD4-
Date:   Sat May 13 16:31:05 2017 -0700

    dax, xfs, ext4: compile out iomap-dax paths in the FS+AF8-DAX+AD0-n case
    
    Tetsuo reports:
    
      fs/built-in.o: In function +AGA-xfs+AF8-file+AF8-iomap+AF8-end':
      xfs+AF8-iomap.c:(.text+-0xe0ef9): undefined reference to +AGA-put+AF8-dax'
      fs/built-in.o: In function +AGA-xfs+AF8-file+AF8-iomap+AF8-begin':
      xfs+AF8-iomap.c:(.text+-0xe1a7f): undefined reference to +AGA-dax+AF8-get+AF8-by+AF8-host'
      make: +ACoAKgAq- +AFs-vmlinux+AF0- Error 1
      +ACQ- grep DAX .config
      CONFIG+AF8-DAX+AD0-m
      +ACM- CONFIG+AF8-DEV+AF8-DAX is not set
      +ACM- CONFIG+AF8-FS+AF8-DAX is not set
    
    When FS+AF8-DAX+AD0-n we can/must throw away the dax code in filesystems.
    Implement 'fs+AF8-' versions of dax+AF8-get+AF8-by+AF8-host() and put+AF8-dax() that are
    nops in the FS+AF8-DAX+AD0-n case.
    
    Cc: +ADw-linux-xfs+AEA-vger.kernel.org+AD4-
    Cc: +ADw-linux-ext4+AEA-vger.kernel.org+AD4-
    Cc: Jan Kara +ADw-jack+AEA-suse.com+AD4-
    Cc: +ACI-Theodore Ts'o+ACI- +ADw-tytso+AEA-mit.edu+AD4-
    Cc: +ACI-Darrick J. Wong+ACI- +ADw-darrick.wong+AEA-oracle.com+AD4-
    Cc: Ross Zwisler +ADw-ross.zwisler+AEA-linux.intel.com+AD4-
    Tested-by: Tony Luck +ADw-tony.luck+AEA-intel.com+AD4-
    Fixes: ef51042472f5 (+ACI-block, dax: move 'select DAX' from BLOCK to FS+AF8-DAX+ACI-)
    Reported-by: Tetsuo Handa +ADw-penguin-kernel+AEA-i-love.sakura.ne.jp+AD4-
    Signed-off-by: Dan Williams +ADw-dan.j.williams+AEA-intel.com+AD4-

diff --git a/drivers/dax/super.c b/drivers/dax/super.c
index ebf43f531ada..6ed32aac8bbe 100644
--- a/drivers/dax/super.c
+-+-+- b/drivers/dax/super.c
+AEAAQA- -44,6 +-44,7 +AEAAQA- void dax+AF8-read+AF8-unlock(int id)
 +AH0-
 EXPORT+AF8-SYMBOL+AF8-GPL(dax+AF8-read+AF8-unlock)+ADs-
 
+-+ACM-ifdef CONFIG+AF8-BLOCK
 int bdev+AF8-dax+AF8-pgoff(struct block+AF8-device +ACo-bdev, sector+AF8-t sector, size+AF8-t size,
 		pgoff+AF8-t +ACo-pgoff)
 +AHs-
+AEAAQA- -112,6 +-113,7 +AEAAQA- int +AF8AXw-bdev+AF8-dax+AF8-supported(struct super+AF8-block +ACo-sb, int blocksize)
 	return 0+ADs-
 +AH0-
 EXPORT+AF8-SYMBOL+AF8-GPL(+AF8AXw-bdev+AF8-dax+AF8-supported)+ADs-
+-+ACM-endif
 
 /+ACoAKg-
  +ACo- struct dax+AF8-device - anchor object for dax services
diff --git a/fs/ext2/inode.c b/fs/ext2/inode.c
index 26d77f9f8c12..2dcbd5698884 100644
--- a/fs/ext2/inode.c
+-+-+- b/fs/ext2/inode.c
+AEAAQA- -817,7 +-817,7 +AEAAQA- static int ext2+AF8-iomap+AF8-begin(struct inode +ACo-inode, loff+AF8-t offset, loff+AF8-t length,
 	iomap-+AD4-bdev +AD0- bdev+ADs-
 	iomap-+AD4-offset +AD0- (u64)first+AF8-block +ADwAPA- blkbits+ADs-
 	if (blk+AF8-queue+AF8-dax(bdev-+AD4-bd+AF8-queue))
-		iomap-+AD4-dax+AF8-dev +AD0- dax+AF8-get+AF8-by+AF8-host(bdev-+AD4-bd+AF8-disk-+AD4-disk+AF8-name)+ADs-
+-		iomap-+AD4-dax+AF8-dev +AD0- fs+AF8-dax+AF8-get+AF8-by+AF8-host(bdev-+AD4-bd+AF8-disk-+AD4-disk+AF8-name)+ADs-
 	else
 		iomap-+AD4-dax+AF8-dev +AD0- NULL+ADs-
 
+AEAAQA- -841,7 +-841,7 +AEAAQA- static int
 ext2+AF8-iomap+AF8-end(struct inode +ACo-inode, loff+AF8-t offset, loff+AF8-t length,
 		ssize+AF8-t written, unsigned flags, struct iomap +ACo-iomap)
 +AHs-
-	put+AF8-dax(iomap-+AD4-dax+AF8-dev)+ADs-
+-	fs+AF8-put+AF8-dax(iomap-+AD4-dax+AF8-dev)+ADs-
 	if (iomap-+AD4-type +AD0APQ- IOMAP+AF8-MAPPED +ACYAJg-
 	    written +ADw- length +ACYAJg-
 	    (flags +ACY- IOMAP+AF8-WRITE))
diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c
index 5834c4d76be8..1bd0bfa547f6 100644
--- a/fs/ext4/inode.c
+-+-+- b/fs/ext4/inode.c
+AEAAQA- -3412,7 +-3412,7 +AEAAQA- static int ext4+AF8-iomap+AF8-begin(struct inode +ACo-inode, loff+AF8-t offset, loff+AF8-t length,
 	bdev +AD0- inode-+AD4-i+AF8-sb-+AD4-s+AF8-bdev+ADs-
 	iomap-+AD4-bdev +AD0- bdev+ADs-
 	if (blk+AF8-queue+AF8-dax(bdev-+AD4-bd+AF8-queue))
-		iomap-+AD4-dax+AF8-dev +AD0- dax+AF8-get+AF8-by+AF8-host(bdev-+AD4-bd+AF8-disk-+AD4-disk+AF8-name)+ADs-
+-		iomap-+AD4-dax+AF8-dev +AD0- fs+AF8-dax+AF8-get+AF8-by+AF8-host(bdev-+AD4-bd+AF8-disk-+AD4-disk+AF8-name)+ADs-
 	else
 		iomap-+AD4-dax+AF8-dev +AD0- NULL+ADs-
 	iomap-+AD4-offset +AD0- first+AF8-block +ADwAPA- blkbits+ADs-
+AEAAQA- -3447,7 +-3447,7 +AEAAQA- static int ext4+AF8-iomap+AF8-end(struct inode +ACo-inode, loff+AF8-t offset, loff+AF8-t length,
 	int blkbits +AD0- inode-+AD4-i+AF8-blkbits+ADs-
 	bool truncate +AD0- false+ADs-
 
-	put+AF8-dax(iomap-+AD4-dax+AF8-dev)+ADs-
+-	fs+AF8-put+AF8-dax(iomap-+AD4-dax+AF8-dev)+ADs-
 	if (+ACE-(flags +ACY- IOMAP+AF8-WRITE) +AHwAfA- (flags +ACY- IOMAP+AF8-FAULT))
 		return 0+ADs-
 
diff --git a/fs/xfs/xfs+AF8-iomap.c b/fs/xfs/xfs+AF8-iomap.c
index a63f61c256bd..94e5bdf7304c 100644
--- a/fs/xfs/xfs+AF8-iomap.c
+-+-+- b/fs/xfs/xfs+AF8-iomap.c
+AEAAQA- -1068,7 +-1068,7 +AEAAQA- xfs+AF8-file+AF8-iomap+AF8-begin(
 	/+ACo- optionally associate a dax device with the iomap bdev +ACo-/
 	bdev +AD0- iomap-+AD4-bdev+ADs-
 	if (blk+AF8-queue+AF8-dax(bdev-+AD4-bd+AF8-queue))
-		iomap-+AD4-dax+AF8-dev +AD0- dax+AF8-get+AF8-by+AF8-host(bdev-+AD4-bd+AF8-disk-+AD4-disk+AF8-name)+ADs-
+-		iomap-+AD4-dax+AF8-dev +AD0- fs+AF8-dax+AF8-get+AF8-by+AF8-host(bdev-+AD4-bd+AF8-disk-+AD4-disk+AF8-name)+ADs-
 	else
 		iomap-+AD4-dax+AF8-dev +AD0- NULL+ADs-
 
+AEAAQA- -1149,7 +-1149,7 +AEAAQA- xfs+AF8-file+AF8-iomap+AF8-end(
 	unsigned		flags,
 	struct iomap		+ACo-iomap)
 +AHs-
-	put+AF8-dax(iomap-+AD4-dax+AF8-dev)+ADs-
+-	fs+AF8-put+AF8-dax(iomap-+AD4-dax+AF8-dev)+ADs-
 	if ((flags +ACY- IOMAP+AF8-WRITE) +ACYAJg- iomap-+AD4-type +AD0APQ- IOMAP+AF8-DELALLOC)
 		return xfs+AF8-file+AF8-iomap+AF8-end+AF8-delalloc(XFS+AF8-I(inode), offset,
 				length, written, iomap)+ADs-
diff --git a/include/linux/dax.h b/include/linux/dax.h
index 00ebac854bb7..5ec1f6c47716 100644
--- a/include/linux/dax.h
+-+-+- b/include/linux/dax.h
+AEAAQA- -18,6 +-18,20 +AEAAQA- struct dax+AF8-operations +AHs-
 			void +ACoAKg-, pfn+AF8-t +ACo-)+ADs-
 +AH0AOw-
 
+-+ACM-if IS+AF8-ENABLED(CONFIG+AF8-DAX)
+-struct dax+AF8-device +ACo-dax+AF8-get+AF8-by+AF8-host(const char +ACo-host)+ADs-
+-void put+AF8-dax(struct dax+AF8-device +ACo-dax+AF8-dev)+ADs-
+-+ACM-else
+-static inline struct dax+AF8-device +ACo-dax+AF8-get+AF8-by+AF8-host(const char +ACo-host)
+-+AHs-
+-	return NULL+ADs-
+-+AH0-
+-
+-static inline void put+AF8-dax(struct dax+AF8-device +ACo-dax+AF8-dev)
+-+AHs-
+-+AH0-
+-+ACM-endif
+-
 int bdev+AF8-dax+AF8-pgoff(struct block+AF8-device +ACo-, sector+AF8-t, size+AF8-t, pgoff+AF8-t +ACo-pgoff)+ADs-
 +ACM-if IS+AF8-ENABLED(CONFIG+AF8-FS+AF8-DAX)
 int +AF8AXw-bdev+AF8-dax+AF8-supported(struct super+AF8-block +ACo-sb, int blocksize)+ADs-
+AEAAQA- -25,23 +-39,29 +AEAAQA- static inline int bdev+AF8-dax+AF8-supported(struct super+AF8-block +ACo-sb, int blocksize)
 +AHs-
 	return +AF8AXw-bdev+AF8-dax+AF8-supported(sb, blocksize)+ADs-
 +AH0-
+-
+-static inline struct dax+AF8-device +ACo-fs+AF8-dax+AF8-get+AF8-by+AF8-host(const char +ACo-host)
+-+AHs-
+-	return dax+AF8-get+AF8-by+AF8-host(host)+ADs-
+-+AH0-
+-
+-static inline void fs+AF8-put+AF8-dax(struct dax+AF8-device +ACo-dax+AF8-dev)
+-+AHs-
+-	put+AF8-dax(dax+AF8-dev)+ADs-
+-+AH0-
+-
 +ACM-else
 static inline int bdev+AF8-dax+AF8-supported(struct super+AF8-block +ACo-sb, int blocksize)
 +AHs-
 	return -EOPNOTSUPP+ADs-
 +AH0-
-+ACM-endif
 
-+ACM-if IS+AF8-ENABLED(CONFIG+AF8-DAX)
-struct dax+AF8-device +ACo-dax+AF8-get+AF8-by+AF8-host(const char +ACo-host)+ADs-
-void put+AF8-dax(struct dax+AF8-device +ACo-dax+AF8-dev)+ADs-
-+ACM-else
-static inline struct dax+AF8-device +ACo-dax+AF8-get+AF8-by+AF8-host(const char +ACo-host)
+-static inline struct dax+AF8-device +ACo-fs+AF8-dax+AF8-get+AF8-by+AF8-host(const char +ACo-host)
 +AHs-
 	return NULL+ADs-
 +AH0-
 
-static inline void put+AF8-dax(struct dax+AF8-device +ACo-dax+AF8-dev)
+-static inline void fs+AF8-put+AF8-dax(struct dax+AF8-device +ACo-dax+AF8-dev)
 +AHs-
 +AH0-
 +ACM-endif



[Index of Archives]     [Linux RAID]     [Linux SCSI]     [Linux ATA RAID]     [IDE]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Device Mapper]

  Powered by Linux