MAP_SYNC in libnvdimm-for-next and collision fixups

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

 



Hi Stephen,

I've pushed a new libnvdimm-for-next branch that includes the libnvdimm
update for 4.15 as well as the MAP+AF8-SYNC patch set for -next exposure.
It has some collisions with code already pending in -next. My proposed
merge resolution is here:

https://git.kernel.org/pub/scm/linux/kernel/git/djbw/nvdimm.git/log/?h+AD0-
libnvdimm-vs-next-20171102

---
commit 2adeca04276acb4e747dbe7a5668efe03b164566
Merge: fa8785e862ef c29c91a9daa3
Author: Dan Williams +ADw-dan.j.williams+AEA-intel.com+AD4-
Date:   Thu Nov 2 19:20:59 2017 -0700

    Merge branch 'libnvdimm-for-next' into test

diff --cc fs/dax.c
index 3652b26a0048,78233c716757..f3a7fb804a50
--- a/fs/dax.c
+-+-+- b/fs/dax.c
+AEAAQABA- -825,38 -820,42 +-825,42 +AEAAQABA- out
  +AH0-
  EXPORT+AF8-SYMBOL+AF8-GPL(dax+AF8-writeback+AF8-mapping+AF8-range)+ADs-
  
- static int dax+AF8-insert+AF8-mapping(struct address+AF8-space +ACo-mapping,
- 		struct block+AF8-device +ACo-bdev, struct dax+AF8-device +ACo-dax+AF8-dev,
- 		sector+AF8-t sector, size+AF8-t size, void +ACo-entry,
- 		struct vm+AF8-area+AF8-struct +ACo-vma, struct vm+AF8-fault +ACo-vmf)
+- static sector+AF8-t dax+AF8-iomap+AF8-sector(struct iomap +ACo-iomap, loff+AF8-t pos)
  +AHs-
- 	unsigned long vaddr +AD0- vmf-+AD4-address+ADs-
- 	void +ACo-ret, +ACo-kaddr+ADs-
 -	return iomap-+AD4-blkno +- (((pos +ACY- PAGE+AF8-MASK) - iomap-+AD4-offset) +AD4APg- 9)+ADs-
+-+-	return (iomap-+AD4-addr +- (pos +ACY- PAGE+AF8-MASK) - iomap-+AD4-offset) +AD4APg- 9+ADs-
+- +AH0-
+- 
+- static int dax+AF8-iomap+AF8-pfn(struct iomap +ACo-iomap, loff+AF8-t pos, size+AF8-t size,
+- 			 pfn+AF8-t +ACo-pfnp)
+- +AHs-
+- 	const sector+AF8-t sector +AD0- dax+AF8-iomap+AF8-sector(iomap, pos)+ADs-
  	pgoff+AF8-t pgoff+ADs-
+- 	void +ACo-kaddr+ADs-
  	int id, rc+ADs-
- 	pfn+AF8-t pfn+ADs-
+- 	long length+ADs-
  
- 	rc +AD0- bdev+AF8-dax+AF8-pgoff(bdev, sector, size, +ACY-pgoff)+ADs-
+- 	rc +AD0- bdev+AF8-dax+AF8-pgoff(iomap-+AD4-bdev, sector, size, +ACY-pgoff)+ADs-
  	if (rc)
  		return rc+ADs-
- 
  	id +AD0- dax+AF8-read+AF8-lock()+ADs-
- 	rc +AD0- dax+AF8-direct+AF8-access(dax+AF8-dev, pgoff, PHYS+AF8-PFN(size), +ACY-kaddr, +ACY-pfn)+ADs-
- 	if (rc +ADw- 0) +AHs-
- 		dax+AF8-read+AF8-unlock(id)+ADs-
- 		return rc+ADs-
+- 	length +AD0- dax+AF8-direct+AF8-access(iomap-+AD4-dax+AF8-dev, pgoff, PHYS+AF8-PFN(size),
+- 				   +ACY-kaddr, pfnp)+ADs-
+- 	if (length +ADw- 0) +AHs-
+- 		rc +AD0- length+ADs-
+- 		goto out+ADs-
  	+AH0-
+- 	rc +AD0- -EINVAL+ADs-
+- 	if (PFN+AF8-PHYS(length) +ADw- size)
+- 		goto out+ADs-
+- 	if (pfn+AF8-t+AF8-to+AF8-pfn(+ACo-pfnp) +ACY- (PHYS+AF8-PFN(size)-1))
+- 		goto out+ADs-
+- 	/+ACo- For larger pages we need devmap +ACo-/
+- 	if (length +AD4- 1 +ACYAJg- +ACE-pfn+AF8-t+AF8-devmap(+ACo-pfnp))
+- 		goto out+ADs-
+- 	rc +AD0- 0+ADs-
+- out:
  	dax+AF8-read+AF8-unlock(id)+ADs-
- 
- 	ret +AD0- dax+AF8-insert+AF8-mapping+AF8-entry(mapping, vmf, entry, sector, 0)+ADs-
- 	if (IS+AF8-ERR(ret))
- 		return PTR+AF8-ERR(ret)+ADs-
- 
- 	trace+AF8-dax+AF8-insert+AF8-mapping(mapping-+AD4-host, vmf, ret)+ADs-
- 	if (vmf-+AD4-flags +ACY- FAULT+AF8-FLAG+AF8-WRITE)
- 		return vm+AF8-insert+AF8-mixed+AF8-mkwrite(vma, vaddr, pfn)+ADs-
- 	else
- 		return vm+AF8-insert+AF8-mixed(vma, vaddr, pfn)+ADs-
+- 	return rc+ADs-
  +AH0-
  
  /+ACo-
diff --cc fs/ext4/inode.c
index 59d31fec67ae,13a198924a0f..7250861f0f7b
--- a/fs/ext4/inode.c
+-+-+- b/fs/ext4/inode.c
+AEAAQABA- -3383,6 -3393,20 +-3383,19 +AEAAQABA- static int ext4+AF8-releasepage(struct pag
  		return try+AF8-to+AF8-free+AF8-buffers(page)+ADs-
  +AH0-
  
 -+ACM-ifdef CONFIG+AF8-FS+AF8-DAX
+- static bool ext4+AF8-inode+AF8-datasync+AF8-dirty(struct inode +ACo-inode)
+- +AHs-
+- 	journal+AF8-t +ACo-journal +AD0- EXT4+AF8-SB(inode-+AD4-i+AF8-sb)-+AD4-s+AF8-journal+ADs-
+- 
+- 	if (journal)
+- 		return +ACE-jbd2+AF8-transaction+AF8-committed(journal,
+- 					EXT4+AF8-I(inode)-+AD4-i+AF8-datasync+AF8-tid)+ADs-
+- 	/+ACo- Any metadata buffers to write? +ACo-/
+- 	if (+ACE-list+AF8-empty(+ACY-inode-+AD4-i+AF8-mapping-+AD4-private+AF8-list))
+- 		return true+ADs-
+- 	return inode-+AD4-i+AF8-state +ACY- I+AF8-DIRTY+AF8-DATASYNC+ADs-
+- +AH0-
+- 
  static int ext4+AF8-iomap+AF8-begin(struct inode +ACo-inode, loff+AF8-t offset, loff+AF8-t length,
  			    unsigned flags, struct iomap +ACo-iomap)
  +AHs-
diff --cc include/linux/iomap.h
index a61be86710b5,73e3b7085dbe..a309d611d380
--- a/include/linux/iomap.h
+-+-+- b/include/linux/iomap.h
+AEAAQABA- -21,8 -21,12 +-21,13 +AEAAQABA- struct vm+AF8-fault
  /+ACo-
   +ACo- Flags for all iomap mappings:
   +ACo-/
 -+ACM-define IOMAP+AF8-F+AF8-NEW	0x01	/+ACo- blocks have been newly allocated +ACo-/
 +-+ACM-define IOMAP+AF8-F+AF8-NEW		0x01	/+ACo- blocks have been newly allocated +ACo-/
 +-+ACM-define IOMAP+AF8-F+AF8-BOUNDARY	0x02	/+ACo- mapping ends at metadata boundary +ACo-/
+- /+ACo-
+-  +ACo- IOMAP+AF8-F+AF8-DIRTY indicates the inode has uncommitted metadata needed to access
+-  +ACo- written data and requires fdatasync to commit them to persistent storage.
+-  +ACo-/
 -+ACM-define IOMAP+AF8-F+AF8-DIRTY	0x02
+-+-+ACM-define IOMAP+AF8-F+AF8-DIRTY		0x04
  
  /+ACo-
   +ACo- Flags that only need to be reported for IOMAP+AF8-REPORT requests:



[Index of Archives]     [Linux Ext4 Filesystem]     [Union Filesystem]     [Filesystem Testing]     [Ceph Users]     [Ecryptfs]     [AutoFS]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux Cachefs]     [Reiser Filesystem]     [Linux RAID]     [Samba]     [Device Mapper]     [CEPH Development]
  Powered by Linux