[PATCH 01/19] orangefs: implement xattr cache

2018-10-07 Thread Martin Brandenburg
it reduces traffic to the server. Signed-off-by: Martin Brandenburg --- fs/orangefs/inode.c | 1 + fs/orangefs/orangefs-kernel.h | 10 fs/orangefs/super.c | 9 +++ fs/orangefs/xattr.c | 104 ++ 4 files changed, 124 insertions

[PATCH 03/19] orangefs: simplify orangefs_inode_getattr interface

2018-10-07 Thread Martin Brandenburg
size and use the cached size. All of the in-kernel callers that wanted size did not want a cached size. Now a getattr cannot use the cached size if it wants size at all. Signed-off-by: Martin Brandenburg --- fs/orangefs/file.c| 17 - fs/orangefs/inode.c

[PATCH 01/19] orangefs: implement xattr cache

2018-10-07 Thread Martin Brandenburg
it reduces traffic to the server. Signed-off-by: Martin Brandenburg --- fs/orangefs/inode.c | 1 + fs/orangefs/orangefs-kernel.h | 10 fs/orangefs/super.c | 9 +++ fs/orangefs/xattr.c | 104 ++ 4 files changed, 124 insertions

[PATCH 03/19] orangefs: simplify orangefs_inode_getattr interface

2018-10-07 Thread Martin Brandenburg
size and use the cached size. All of the in-kernel callers that wanted size did not want a cached size. Now a getattr cannot use the cached size if it wants size at all. Signed-off-by: Martin Brandenburg --- fs/orangefs/file.c| 17 - fs/orangefs/inode.c

[PATCH 05/19] orangefs: hold i_lock during inode_getattr

2018-10-07 Thread Martin Brandenburg
This should be a no-op now. When inode writeback works, this will prevent a getattr from overwriting inode data while an inode is transitioning to dirty. Signed-off-by: Martin Brandenburg --- fs/orangefs/inode.c | 4 ++-- fs/orangefs/orangefs-utils.c | 33

[PATCH 05/19] orangefs: hold i_lock during inode_getattr

2018-10-07 Thread Martin Brandenburg
This should be a no-op now. When inode writeback works, this will prevent a getattr from overwriting inode data while an inode is transitioning to dirty. Signed-off-by: Martin Brandenburg --- fs/orangefs/inode.c | 4 ++-- fs/orangefs/orangefs-utils.c | 33

[PATCH 08/19] orangefs: reorganize setattr functions to track attribute changes

2018-10-07 Thread Martin Brandenburg
check for that lock if getattr_time ok or attr_valid, unlock and return else, copy in update getattr_time unlock Signed-off-by: Martin Brandenburg --- fs/orangefs/acl.c | 4 +- fs/orangefs/inode.c | 76 ++- fs/orangefs/n

[PATCH 15/19] orangefs: avoid fsync service operation on flush

2018-10-07 Thread Martin Brandenburg
request. Signed-off-by: Martin Brandenburg --- fs/orangefs/file.c | 19 ++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/fs/orangefs/file.c b/fs/orangefs/file.c index 5eda483263ae..d5ecfea3288a 100644 --- a/fs/orangefs/file.c +++ b/fs/orangefs/file.c @@ -596,7

[PATCH 08/19] orangefs: reorganize setattr functions to track attribute changes

2018-10-07 Thread Martin Brandenburg
check for that lock if getattr_time ok or attr_valid, unlock and return else, copy in update getattr_time unlock Signed-off-by: Martin Brandenburg --- fs/orangefs/acl.c | 4 +- fs/orangefs/inode.c | 76 ++- fs/orangefs/n

[PATCH 15/19] orangefs: avoid fsync service operation on flush

2018-10-07 Thread Martin Brandenburg
request. Signed-off-by: Martin Brandenburg --- fs/orangefs/file.c | 19 ++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/fs/orangefs/file.c b/fs/orangefs/file.c index 5eda483263ae..d5ecfea3288a 100644 --- a/fs/orangefs/file.c +++ b/fs/orangefs/file.c @@ -596,7

[PATCH 10/19] orangefs: service ops done for writeback are not killable

2018-10-07 Thread Martin Brandenburg
Signed-off-by: Martin Brandenburg --- fs/orangefs/orangefs-kernel.h | 1 + fs/orangefs/orangefs-utils.c | 2 +- fs/orangefs/waitqueue.c | 18 ++ 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/fs/orangefs/orangefs-kernel.h b/fs/orangefs/orangefs-kernel.h

[PATCH 12/19] orangefs: implement writepage

2018-10-07 Thread Martin Brandenburg
Now orangefs_inode_getattr fills from cache if an inode has dirty pages. also if attr_valid and dirty pages and !flags, we spin on inode writeback before returning if pages still dirty after: should it be other way Signed-off-by: Martin Brandenburg --- fs/orangefs/file.c | 77

[PATCH 11/19] orangefs: migrate to generic_file_read_iter

2018-10-07 Thread Martin Brandenburg
truncate_inode_pages now in the write path so a subsequent read sees the new data. Signed-off-by: Martin Brandenburg --- fs/orangefs/file.c| 68 --- fs/orangefs/inode.c | 63 fs/orangefs/orangefs-kernel.h | 13

[PATCH 10/19] orangefs: service ops done for writeback are not killable

2018-10-07 Thread Martin Brandenburg
Signed-off-by: Martin Brandenburg --- fs/orangefs/orangefs-kernel.h | 1 + fs/orangefs/orangefs-utils.c | 2 +- fs/orangefs/waitqueue.c | 18 ++ 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/fs/orangefs/orangefs-kernel.h b/fs/orangefs/orangefs-kernel.h

[PATCH 12/19] orangefs: implement writepage

2018-10-07 Thread Martin Brandenburg
Now orangefs_inode_getattr fills from cache if an inode has dirty pages. also if attr_valid and dirty pages and !flags, we spin on inode writeback before returning if pages still dirty after: should it be other way Signed-off-by: Martin Brandenburg --- fs/orangefs/file.c | 77

[PATCH 11/19] orangefs: migrate to generic_file_read_iter

2018-10-07 Thread Martin Brandenburg
truncate_inode_pages now in the write path so a subsequent read sees the new data. Signed-off-by: Martin Brandenburg --- fs/orangefs/file.c| 68 --- fs/orangefs/inode.c | 63 fs/orangefs/orangefs-kernel.h | 13

[PATCH 17/19] orangefs: implement writepages

2018-10-07 Thread Martin Brandenburg
Go through pages and look for a consecutive writable region. After finding 128 consecutive writable pages or when finding a non-consecutive region, do the write. Signed-off-by: Martin Brandenburg --- fs/orangefs/file.c| 1 + fs/orangefs/inode.c | 144

[PATCH 16/19] orangefs: use kmem_cache for orangefs_write_request

2018-10-07 Thread Martin Brandenburg
Signed-off-by: Martin Brandenburg --- fs/orangefs/inode.c | 10 +- fs/orangefs/orangefs-cache.c | 24 ++-- fs/orangefs/orangefs-kernel.h | 6 -- fs/orangefs/orangefs-mod.c| 10 +- 4 files changed, 36 insertions(+), 14 deletions(-) diff

[PATCH 17/19] orangefs: implement writepages

2018-10-07 Thread Martin Brandenburg
Go through pages and look for a consecutive writable region. After finding 128 consecutive writable pages or when finding a non-consecutive region, do the write. Signed-off-by: Martin Brandenburg --- fs/orangefs/file.c| 1 + fs/orangefs/inode.c | 144

[PATCH 16/19] orangefs: use kmem_cache for orangefs_write_request

2018-10-07 Thread Martin Brandenburg
Signed-off-by: Martin Brandenburg --- fs/orangefs/inode.c | 10 +- fs/orangefs/orangefs-cache.c | 24 ++-- fs/orangefs/orangefs-kernel.h | 6 -- fs/orangefs/orangefs-mod.c| 10 +- 4 files changed, 36 insertions(+), 14 deletions(-) diff

[PATCH 13/19] orangefs: skip inode writeout if nothing to write

2018-10-07 Thread Martin Brandenburg
Would happen if an inode is dirty but whatever happened is not something that can be written out to OrangeFS. Signed-off-by: Martin Brandenburg --- fs/orangefs/orangefs-utils.c | 5 + 1 file changed, 5 insertions(+) diff --git a/fs/orangefs/orangefs-utils.c b/fs/orangefs/orangefs-utils.c

[PATCH 07/19] orangefs: let setattr write to cached inode

2018-10-07 Thread Martin Brandenburg
This is a fairly big change, but ultimately it's not a lot of code. Implement write_inode and then avoid the call to orangefs_inode_setattr within orangefs_setattr. Signed-off-by: Martin Brandenburg --- fs/orangefs/inode.c | 11 +++ fs/orangefs/super.c | 16 2 files

[PATCH 19/19] orangefs: do writepages_work if a single page must be written

2018-10-07 Thread Martin Brandenburg
Otherwise the next page can't possibly be an append and it'll just sit there and write pages one by one until it flushes the saved region at the very end. Signed-off-by: Martin Brandenburg --- fs/orangefs/inode.c | 8 1 file changed, 8 insertions(+) diff --git a/fs/orangefs/inode.c b

[PATCH 06/19] orangefs: set up and use backing_dev_info

2018-10-07 Thread Martin Brandenburg
Signed-off-by: Martin Brandenburg --- fs/orangefs/super.c | 21 ++--- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/fs/orangefs/super.c b/fs/orangefs/super.c index 4c36481208f5..61bec955b285 100644 --- a/fs/orangefs/super.c +++ b/fs/orangefs/super.c @@ -406,15

[PATCH 09/19] orangefs: remove orangefs_readpages

2018-10-07 Thread Martin Brandenburg
It's a copy of the loop which would run in read_pages from mm/readahead.c. Signed-off-by: Martin Brandenburg --- fs/orangefs/inode.c | 39 +-- 1 file changed, 1 insertion(+), 38 deletions(-) diff --git a/fs/orangefs/inode.c b/fs/orangefs/inode.c index

[PATCH 04/19] orangefs: update attributes rather than relying on server

2018-10-07 Thread Martin Brandenburg
it does not yet know the pending setattr. Signed-off-by: Martin Brandenburg --- fs/orangefs/file.c | 10 ++ fs/orangefs/namei.c | 7 ++- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/fs/orangefs/file.c b/fs/orangefs/file.c index 3ab6e5126899..aec17635a50f 100644

[PATCH 18/19] orangefs: use client-core buffer size to determine writepages count

2018-10-07 Thread Martin Brandenburg
The previous fixed count of 128 was arbitrary. I see about a 10% performance increase on large block size I/O since the count is now 1024 (given the default four megabyte client-core buffer). Signed-off-by: Martin Brandenburg --- fs/orangefs/inode.c | 27 --- 1 file

[PATCH 13/19] orangefs: skip inode writeout if nothing to write

2018-10-07 Thread Martin Brandenburg
Would happen if an inode is dirty but whatever happened is not something that can be written out to OrangeFS. Signed-off-by: Martin Brandenburg --- fs/orangefs/orangefs-utils.c | 5 + 1 file changed, 5 insertions(+) diff --git a/fs/orangefs/orangefs-utils.c b/fs/orangefs/orangefs-utils.c

[PATCH 07/19] orangefs: let setattr write to cached inode

2018-10-07 Thread Martin Brandenburg
This is a fairly big change, but ultimately it's not a lot of code. Implement write_inode and then avoid the call to orangefs_inode_setattr within orangefs_setattr. Signed-off-by: Martin Brandenburg --- fs/orangefs/inode.c | 11 +++ fs/orangefs/super.c | 16 2 files

[PATCH 19/19] orangefs: do writepages_work if a single page must be written

2018-10-07 Thread Martin Brandenburg
Otherwise the next page can't possibly be an append and it'll just sit there and write pages one by one until it flushes the saved region at the very end. Signed-off-by: Martin Brandenburg --- fs/orangefs/inode.c | 8 1 file changed, 8 insertions(+) diff --git a/fs/orangefs/inode.c b

[PATCH 06/19] orangefs: set up and use backing_dev_info

2018-10-07 Thread Martin Brandenburg
Signed-off-by: Martin Brandenburg --- fs/orangefs/super.c | 21 ++--- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/fs/orangefs/super.c b/fs/orangefs/super.c index 4c36481208f5..61bec955b285 100644 --- a/fs/orangefs/super.c +++ b/fs/orangefs/super.c @@ -406,15

[PATCH 09/19] orangefs: remove orangefs_readpages

2018-10-07 Thread Martin Brandenburg
It's a copy of the loop which would run in read_pages from mm/readahead.c. Signed-off-by: Martin Brandenburg --- fs/orangefs/inode.c | 39 +-- 1 file changed, 1 insertion(+), 38 deletions(-) diff --git a/fs/orangefs/inode.c b/fs/orangefs/inode.c index

[PATCH 04/19] orangefs: update attributes rather than relying on server

2018-10-07 Thread Martin Brandenburg
it does not yet know the pending setattr. Signed-off-by: Martin Brandenburg --- fs/orangefs/file.c | 10 ++ fs/orangefs/namei.c | 7 ++- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/fs/orangefs/file.c b/fs/orangefs/file.c index 3ab6e5126899..aec17635a50f 100644

[PATCH 18/19] orangefs: use client-core buffer size to determine writepages count

2018-10-07 Thread Martin Brandenburg
The previous fixed count of 128 was arbitrary. I see about a 10% performance increase on large block size I/O since the count is now 1024 (given the default four megabyte client-core buffer). Signed-off-by: Martin Brandenburg --- fs/orangefs/inode.c | 27 --- 1 file

[PATCH 02/19] orangefs: do not invalidate attributes on inode create

2018-10-07 Thread Martin Brandenburg
When an inode is created, we fetch attributes from the server. There is no need to turn around and invalidate them. No need to initialize attributes after the getattr either. Either it'll be exactly the same, or it'll be something else and wrong. Signed-off-by: Martin Brandenburg --- fs

[PATCH 00/19] [V2] orangefs: page cache

2018-10-07 Thread Martin Brandenburg
implementation. We also size the writepages buffer based on the client core buffer. However I'm not happy with the memory allocation in writepages. Mike, I know you've had some trouble with the original series. I'd like to know if this fixes that. Martin Brandenburg (19): orangefs: implement

[PATCH 14/19] orangefs: write range tracking

2018-10-07 Thread Martin Brandenburg
. Signed-off-by: Martin Brandenburg --- fs/orangefs/file.c| 12 +- fs/orangefs/inode.c | 267 ++ fs/orangefs/orangefs-kernel.h | 12 +- 3 files changed, 261 insertions(+), 30 deletions(-) diff --git a/fs/orangefs/file.c b/fs/orangefs/file.c

[PATCH 02/19] orangefs: do not invalidate attributes on inode create

2018-10-07 Thread Martin Brandenburg
When an inode is created, we fetch attributes from the server. There is no need to turn around and invalidate them. No need to initialize attributes after the getattr either. Either it'll be exactly the same, or it'll be something else and wrong. Signed-off-by: Martin Brandenburg --- fs

[PATCH 00/19] [V2] orangefs: page cache

2018-10-07 Thread Martin Brandenburg
implementation. We also size the writepages buffer based on the client core buffer. However I'm not happy with the memory allocation in writepages. Mike, I know you've had some trouble with the original series. I'd like to know if this fixes that. Martin Brandenburg (19): orangefs: implement

[PATCH 14/19] orangefs: write range tracking

2018-10-07 Thread Martin Brandenburg
. Signed-off-by: Martin Brandenburg --- fs/orangefs/file.c| 12 +- fs/orangefs/inode.c | 267 ++ fs/orangefs/orangefs-kernel.h | 12 +- 3 files changed, 261 insertions(+), 30 deletions(-) diff --git a/fs/orangefs/file.c b/fs/orangefs/file.c

[PATCH 02/17] orangefs: do not invalidate attributes on inode create

2018-09-17 Thread Martin Brandenburg
When an inode is created, we fetch attributes from the server. There is no need to turn around and invalidate them. No need to initialize attributes after the getattr either. Either it'll be exactly the same, or it'll be something else and wrong. Signed-off-by: Martin Brandenburg --- fs

[PATCH 03/17] orangefs: simply orangefs_inode_getattr interface

2018-09-17 Thread Martin Brandenburg
size and use the cached size. All of the in-kernel callers that wanted size did not want a cached size. Now a getattr cannot use the cached size if it wants size at all. Signed-off-by: Martin Brandenburg --- fs/orangefs/file.c| 17 - fs/orangefs/inode.c

[PATCH 01/17] orangefs: implement xattr cache

2018-09-17 Thread Martin Brandenburg
it reduces traffic to the server. Signed-off-by: Martin Brandenburg --- fs/orangefs/inode.c | 1 + fs/orangefs/orangefs-kernel.h | 10 fs/orangefs/super.c | 9 +++ fs/orangefs/xattr.c | 104 ++ 4 files changed, 124 insertions

[PATCH 02/17] orangefs: do not invalidate attributes on inode create

2018-09-17 Thread Martin Brandenburg
When an inode is created, we fetch attributes from the server. There is no need to turn around and invalidate them. No need to initialize attributes after the getattr either. Either it'll be exactly the same, or it'll be something else and wrong. Signed-off-by: Martin Brandenburg --- fs

[PATCH 03/17] orangefs: simply orangefs_inode_getattr interface

2018-09-17 Thread Martin Brandenburg
size and use the cached size. All of the in-kernel callers that wanted size did not want a cached size. Now a getattr cannot use the cached size if it wants size at all. Signed-off-by: Martin Brandenburg --- fs/orangefs/file.c| 17 - fs/orangefs/inode.c

[PATCH 01/17] orangefs: implement xattr cache

2018-09-17 Thread Martin Brandenburg
it reduces traffic to the server. Signed-off-by: Martin Brandenburg --- fs/orangefs/inode.c | 1 + fs/orangefs/orangefs-kernel.h | 10 fs/orangefs/super.c | 9 +++ fs/orangefs/xattr.c | 104 ++ 4 files changed, 124 insertions

[PATCH 04/17] orangefs: update attributes rather than relying on server

2018-09-17 Thread Martin Brandenburg
it does not yet know the pending setattr. Signed-off-by: Martin Brandenburg --- fs/orangefs/file.c | 10 ++ fs/orangefs/namei.c | 7 ++- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/fs/orangefs/file.c b/fs/orangefs/file.c index 3ab6e5126899..aec17635a50f 100644

[PATCH 05/17] orangefs: hold i_lock during inode_getattr

2018-09-17 Thread Martin Brandenburg
This should be a no-op now. When inode writeback works, this will prevent a getattr from overwriting inode data while an inode is transitioning to dirty. Signed-off-by: Martin Brandenburg --- fs/orangefs/inode.c | 4 ++-- fs/orangefs/orangefs-utils.c | 33

[PATCH 04/17] orangefs: update attributes rather than relying on server

2018-09-17 Thread Martin Brandenburg
it does not yet know the pending setattr. Signed-off-by: Martin Brandenburg --- fs/orangefs/file.c | 10 ++ fs/orangefs/namei.c | 7 ++- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/fs/orangefs/file.c b/fs/orangefs/file.c index 3ab6e5126899..aec17635a50f 100644

[PATCH 05/17] orangefs: hold i_lock during inode_getattr

2018-09-17 Thread Martin Brandenburg
This should be a no-op now. When inode writeback works, this will prevent a getattr from overwriting inode data while an inode is transitioning to dirty. Signed-off-by: Martin Brandenburg --- fs/orangefs/inode.c | 4 ++-- fs/orangefs/orangefs-utils.c | 33

[PATCH 07/17] orangefs: let setattr write to cached inode

2018-09-17 Thread Martin Brandenburg
This is a fairly big change, but ultimately it's not a lot of code. Implement write_inode and then avoid the call to orangefs_inode_setattr within orangefs_setattr. Signed-off-by: Martin Brandenburg --- fs/orangefs/inode.c | 11 +++ fs/orangefs/super.c | 16 2 files

[PATCH 09/17] orangefs: remove orangefs_readpages

2018-09-17 Thread Martin Brandenburg
It's a copy of the loop which would run in read_pages from mm/readahead.c. Signed-off-by: Martin Brandenburg --- fs/orangefs/inode.c | 39 +-- 1 file changed, 1 insertion(+), 38 deletions(-) diff --git a/fs/orangefs/inode.c b/fs/orangefs/inode.c index

[PATCH 07/17] orangefs: let setattr write to cached inode

2018-09-17 Thread Martin Brandenburg
This is a fairly big change, but ultimately it's not a lot of code. Implement write_inode and then avoid the call to orangefs_inode_setattr within orangefs_setattr. Signed-off-by: Martin Brandenburg --- fs/orangefs/inode.c | 11 +++ fs/orangefs/super.c | 16 2 files

[PATCH 09/17] orangefs: remove orangefs_readpages

2018-09-17 Thread Martin Brandenburg
It's a copy of the loop which would run in read_pages from mm/readahead.c. Signed-off-by: Martin Brandenburg --- fs/orangefs/inode.c | 39 +-- 1 file changed, 1 insertion(+), 38 deletions(-) diff --git a/fs/orangefs/inode.c b/fs/orangefs/inode.c index

[PATCH 08/17] orangefs: reorganize setattr functions to track attribute changes

2018-09-17 Thread Martin Brandenburg
check for that lock if getattr_time ok or attr_valid, unlock and return else, copy in update getattr_time unlock Signed-off-by: Martin Brandenburg --- fs/orangefs/acl.c | 4 +- fs/orangefs/inode.c | 76 ++- fs/orangefs/n

[PATCH 11/17] orangefs: migrate to generic_file_read_iter

2018-09-17 Thread Martin Brandenburg
truncate_inode_pages now in the write path so a subsequent read sees the new data. Signed-off-by: Martin Brandenburg --- fs/orangefs/file.c| 68 --- fs/orangefs/inode.c | 63 fs/orangefs/orangefs-kernel.h | 13

[PATCH 08/17] orangefs: reorganize setattr functions to track attribute changes

2018-09-17 Thread Martin Brandenburg
check for that lock if getattr_time ok or attr_valid, unlock and return else, copy in update getattr_time unlock Signed-off-by: Martin Brandenburg --- fs/orangefs/acl.c | 4 +- fs/orangefs/inode.c | 76 ++- fs/orangefs/n

[PATCH 11/17] orangefs: migrate to generic_file_read_iter

2018-09-17 Thread Martin Brandenburg
truncate_inode_pages now in the write path so a subsequent read sees the new data. Signed-off-by: Martin Brandenburg --- fs/orangefs/file.c| 68 --- fs/orangefs/inode.c | 63 fs/orangefs/orangefs-kernel.h | 13

[PATCH 12/17] orangefs: implement writepage

2018-09-17 Thread Martin Brandenburg
Now orangefs_inode_getattr fills from cache if an inode has dirty pages. also if attr_valid and dirty pages and !flags, we spin on inode writeback before returning if pages still dirty after: should it be other way Signed-off-by: Martin Brandenburg --- fs/orangefs/file.c | 77

[PATCH 12/17] orangefs: implement writepage

2018-09-17 Thread Martin Brandenburg
Now orangefs_inode_getattr fills from cache if an inode has dirty pages. also if attr_valid and dirty pages and !flags, we spin on inode writeback before returning if pages still dirty after: should it be other way Signed-off-by: Martin Brandenburg --- fs/orangefs/file.c | 77

[PATCH 10/17] orangefs: service ops done for writeback are not killable

2018-09-17 Thread Martin Brandenburg
Signed-off-by: Martin Brandenburg --- fs/orangefs/orangefs-kernel.h | 1 + fs/orangefs/orangefs-utils.c | 2 +- fs/orangefs/waitqueue.c | 18 ++ 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/fs/orangefs/orangefs-kernel.h b/fs/orangefs/orangefs-kernel.h

[PATCH 10/17] orangefs: service ops done for writeback are not killable

2018-09-17 Thread Martin Brandenburg
Signed-off-by: Martin Brandenburg --- fs/orangefs/orangefs-kernel.h | 1 + fs/orangefs/orangefs-utils.c | 2 +- fs/orangefs/waitqueue.c | 18 ++ 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/fs/orangefs/orangefs-kernel.h b/fs/orangefs/orangefs-kernel.h

[PATCH 16/17] orangefs: use kmem_cache for orangefs_write_request

2018-09-17 Thread Martin Brandenburg
Signed-off-by: Martin Brandenburg --- fs/orangefs/inode.c | 10 +- fs/orangefs/orangefs-cache.c | 24 ++-- fs/orangefs/orangefs-kernel.h | 6 -- fs/orangefs/orangefs-mod.c| 10 +- 4 files changed, 36 insertions(+), 14 deletions(-) diff

[PATCH 13/17] orangefs: skip inode writeout if nothing to write

2018-09-17 Thread Martin Brandenburg
Would happen if an inode is dirty but whatever happened is not something that can be written out to OrangeFS. Signed-off-by: Martin Brandenburg --- fs/orangefs/orangefs-utils.c | 5 + 1 file changed, 5 insertions(+) diff --git a/fs/orangefs/orangefs-utils.c b/fs/orangefs/orangefs-utils.c

[PATCH 16/17] orangefs: use kmem_cache for orangefs_write_request

2018-09-17 Thread Martin Brandenburg
Signed-off-by: Martin Brandenburg --- fs/orangefs/inode.c | 10 +- fs/orangefs/orangefs-cache.c | 24 ++-- fs/orangefs/orangefs-kernel.h | 6 -- fs/orangefs/orangefs-mod.c| 10 +- 4 files changed, 36 insertions(+), 14 deletions(-) diff

[PATCH 13/17] orangefs: skip inode writeout if nothing to write

2018-09-17 Thread Martin Brandenburg
Would happen if an inode is dirty but whatever happened is not something that can be written out to OrangeFS. Signed-off-by: Martin Brandenburg --- fs/orangefs/orangefs-utils.c | 5 + 1 file changed, 5 insertions(+) diff --git a/fs/orangefs/orangefs-utils.c b/fs/orangefs/orangefs-utils.c

[PATCH 06/17] orangefs: set up and use backing_dev_info

2018-09-17 Thread Martin Brandenburg
Signed-off-by: Martin Brandenburg --- fs/orangefs/super.c | 21 ++--- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/fs/orangefs/super.c b/fs/orangefs/super.c index 4c36481208f5..61bec955b285 100644 --- a/fs/orangefs/super.c +++ b/fs/orangefs/super.c @@ -406,15

[PATCH 06/17] orangefs: set up and use backing_dev_info

2018-09-17 Thread Martin Brandenburg
Signed-off-by: Martin Brandenburg --- fs/orangefs/super.c | 21 ++--- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/fs/orangefs/super.c b/fs/orangefs/super.c index 4c36481208f5..61bec955b285 100644 --- a/fs/orangefs/super.c +++ b/fs/orangefs/super.c @@ -406,15

[PATCH 15/17] orangefs: avoid fsync service operation on flush

2018-09-17 Thread Martin Brandenburg
request. Signed-off-by: Martin Brandenburg --- fs/orangefs/file.c | 19 ++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/fs/orangefs/file.c b/fs/orangefs/file.c index 5eda483263ae..d5ecfea3288a 100644 --- a/fs/orangefs/file.c +++ b/fs/orangefs/file.c @@ -596,7

[PATCH 14/17] orangefs: write range tracking

2018-09-17 Thread Martin Brandenburg
. Signed-off-by: Martin Brandenburg --- fs/orangefs/file.c| 12 +- fs/orangefs/inode.c | 243 ++ fs/orangefs/orangefs-kernel.h | 12 +- 3 files changed, 237 insertions(+), 30 deletions(-) diff --git a/fs/orangefs/file.c b/fs/orangefs/file.c

[PATCH 15/17] orangefs: avoid fsync service operation on flush

2018-09-17 Thread Martin Brandenburg
request. Signed-off-by: Martin Brandenburg --- fs/orangefs/file.c | 19 ++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/fs/orangefs/file.c b/fs/orangefs/file.c index 5eda483263ae..d5ecfea3288a 100644 --- a/fs/orangefs/file.c +++ b/fs/orangefs/file.c @@ -596,7

[PATCH 14/17] orangefs: write range tracking

2018-09-17 Thread Martin Brandenburg
. Signed-off-by: Martin Brandenburg --- fs/orangefs/file.c| 12 +- fs/orangefs/inode.c | 243 ++ fs/orangefs/orangefs-kernel.h | 12 +- 3 files changed, 237 insertions(+), 30 deletions(-) diff --git a/fs/orangefs/file.c b/fs/orangefs/file.c

[PATCH 17/17] orangefs: implement writepages

2018-09-17 Thread Martin Brandenburg
Go through pages and look for a consecutive writable region. After finding 128 consecutive writable pages or when finding a non-consecutive region, do the write. Signed-off-by: Martin Brandenburg --- fs/orangefs/inode.c | 135 +- fs/orangefs/orangefs

[PATCH 17/17] orangefs: implement writepages

2018-09-17 Thread Martin Brandenburg
Go through pages and look for a consecutive writable region. After finding 128 consecutive writable pages or when finding a non-consecutive region, do the write. Signed-off-by: Martin Brandenburg --- fs/orangefs/inode.c | 135 +- fs/orangefs/orangefs

[PATCH 00/17] orangefs: page cache

2018-09-17 Thread Martin Brandenburg
except for the need to separate writes from different uid/gid pairs due to the design of our server. Martin Brandenburg (17): orangefs: implement xattr cache orangefs: do not invalidate attributes on inode create orangefs: simply orangefs_inode_getattr interface orangefs: update attributes

[PATCH 00/17] orangefs: page cache

2018-09-17 Thread Martin Brandenburg
except for the need to separate writes from different uid/gid pairs due to the design of our server. Martin Brandenburg (17): orangefs: implement xattr cache orangefs: do not invalidate attributes on inode create orangefs: simply orangefs_inode_getattr interface orangefs: update attributes

[PATCH] orangefs: reverse sense of revalidate is-inode-stale test

2018-01-26 Thread Martin Brandenburg
It was wrong. Signed-off-by: Martin Brandenburg <mar...@omnibond.com> --- fs/orangefs/dcache.c | 17 +++-- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/fs/orangefs/dcache.c b/fs/orangefs/dcache.c index ae782df5c063..c7aa5c923477 100644 --- a/fs/orangefs/dc

[PATCH] orangefs: reverse sense of revalidate is-inode-stale test

2018-01-26 Thread Martin Brandenburg
It was wrong. Signed-off-by: Martin Brandenburg --- fs/orangefs/dcache.c | 17 +++-- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/fs/orangefs/dcache.c b/fs/orangefs/dcache.c index ae782df5c063..c7aa5c923477 100644 --- a/fs/orangefs/dcache.c +++ b/fs/orangefs

[PATCH 1/7] orangefs: make orangefs_client_debug_init static

2018-01-26 Thread Martin Brandenburg
Signed-off-by: Martin Brandenburg <mar...@omnibond.com> --- fs/orangefs/orangefs-debugfs.c | 2 +- fs/orangefs/orangefs-debugfs.h | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/fs/orangefs/orangefs-debugfs.c b/fs/orangefs/orangefs-debugfs.c index 1c59dff530de..67d531

[PATCH 1/7] orangefs: make orangefs_client_debug_init static

2018-01-26 Thread Martin Brandenburg
Signed-off-by: Martin Brandenburg --- fs/orangefs/orangefs-debugfs.c | 2 +- fs/orangefs/orangefs-debugfs.h | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/fs/orangefs/orangefs-debugfs.c b/fs/orangefs/orangefs-debugfs.c index 1c59dff530de..67d531ad5a56 100644 --- a/fs

[PATCH 3/7] orangefs: remove ORANGEFS_KERNEL_DEBUG

2018-01-26 Thread Martin Brandenburg
It wasn't possible to enable it, and it would've had very little effect. Signed-off-by: Martin Brandenburg <mar...@omnibond.com> --- fs/orangefs/orangefs-kernel.h | 8 ++-- 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/fs/orangefs/orangefs-kernel.h b/fs/orangefs/or

[PATCH 3/7] orangefs: remove ORANGEFS_KERNEL_DEBUG

2018-01-26 Thread Martin Brandenburg
It wasn't possible to enable it, and it would've had very little effect. Signed-off-by: Martin Brandenburg --- fs/orangefs/orangefs-kernel.h | 8 ++-- 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/fs/orangefs/orangefs-kernel.h b/fs/orangefs/orangefs-kernel.h index

[PATCH 6/7] orangefs: remove unused code

2018-01-26 Thread Martin Brandenburg
Signed-off-by: Martin Brandenburg <mar...@omnibond.com> --- fs/orangefs/orangefs-debug.h | 6 fs/orangefs/orangefs-kernel.h | 77 --- fs/orangefs/protocol.h| 45 - 3 files changed, 128 deletions(-) diff --gi

[PATCH 6/7] orangefs: remove unused code

2018-01-26 Thread Martin Brandenburg
Signed-off-by: Martin Brandenburg --- fs/orangefs/orangefs-debug.h | 6 fs/orangefs/orangefs-kernel.h | 77 --- fs/orangefs/protocol.h| 45 - 3 files changed, 128 deletions(-) diff --git a/fs/orangefs/orangefs

[PATCH 5/7] ornagefs: make several *_operations structs static

2018-01-26 Thread Martin Brandenburg
Signed-off-by: Martin Brandenburg <mar...@omnibond.com> --- fs/orangefs/devorangefs-req.c | 52 +-- fs/orangefs/inode.c | 4 ++-- fs/orangefs/orangefs-kernel.h | 3 --- 3 files changed, 28 insertions(+), 31 deletions(-) diff --git a/fs/or

[PATCH 5/7] ornagefs: make several *_operations structs static

2018-01-26 Thread Martin Brandenburg
Signed-off-by: Martin Brandenburg --- fs/orangefs/devorangefs-req.c | 52 +-- fs/orangefs/inode.c | 4 ++-- fs/orangefs/orangefs-kernel.h | 3 --- 3 files changed, 28 insertions(+), 31 deletions(-) diff --git a/fs/orangefs/devorangefs-req.c b

[PATCH 7/7] orangefs: create uapi interface

2018-01-26 Thread Martin Brandenburg
s/orangefs/*.h to include/uapi/linux/orangefs.h. Signed-off-by: Martin Brandenburg <mar...@omnibond.com> --- fs/orangefs/acl.c| 1 - fs/orangefs/dcache.c | 1 - fs/orangefs/devorangefs-req.c| 2 - fs/orangefs/dir.c| 1 - fs/ora

[PATCH 0/7] orangefs uapi

2018-01-26 Thread Martin Brandenburg
ed to know. Martin Brandenburg (7): orangefs: make orangefs_client_debug_init static orangefs: remove gossip_ldebug and gossip_lerr orangefs: remove ORANGEFS_KERNEL_DEBUG orangefs: make orangefs_make_bad_inode static ornagefs: make several *_operations structs static orangefs: remove u

[PATCH 7/7] orangefs: create uapi interface

2018-01-26 Thread Martin Brandenburg
s/orangefs/*.h to include/uapi/linux/orangefs.h. Signed-off-by: Martin Brandenburg --- fs/orangefs/acl.c| 1 - fs/orangefs/dcache.c | 1 - fs/orangefs/devorangefs-req.c| 2 - fs/orangefs/dir.c| 1 - fs/orangefs/downcall.h | 137 --

[PATCH 0/7] orangefs uapi

2018-01-26 Thread Martin Brandenburg
ed to know. Martin Brandenburg (7): orangefs: make orangefs_client_debug_init static orangefs: remove gossip_ldebug and gossip_lerr orangefs: remove ORANGEFS_KERNEL_DEBUG orangefs: make orangefs_make_bad_inode static ornagefs: make several *_operations structs static orangefs: remove u

[PATCH 4/7] orangefs: make orangefs_make_bad_inode static

2018-01-26 Thread Martin Brandenburg
Signed-off-by: Martin Brandenburg <mar...@omnibond.com> --- fs/orangefs/orangefs-kernel.h | 2 -- fs/orangefs/orangefs-utils.c | 38 +++--- 2 files changed, 19 insertions(+), 21 deletions(-) diff --git a/fs/orangefs/orangefs-kernel.h b/fs/orangefs/or

[PATCH 4/7] orangefs: make orangefs_make_bad_inode static

2018-01-26 Thread Martin Brandenburg
Signed-off-by: Martin Brandenburg --- fs/orangefs/orangefs-kernel.h | 2 -- fs/orangefs/orangefs-utils.c | 38 +++--- 2 files changed, 19 insertions(+), 21 deletions(-) diff --git a/fs/orangefs/orangefs-kernel.h b/fs/orangefs/orangefs-kernel.h index

[PATCH 2/7] orangefs: remove gossip_ldebug and gossip_lerr

2018-01-26 Thread Martin Brandenburg
gossip_ldebug is unused. gossip_lerr is used in two places. The messages are unique so line numbers are unnecessary. Also remove support for compiling gossip messages out. It wasn't possible to enable it anyway. Signed-off-by: Martin Brandenburg <mar...@omnibond.com> --- fs/orangefs/or

[PATCH 2/7] orangefs: remove gossip_ldebug and gossip_lerr

2018-01-26 Thread Martin Brandenburg
gossip_ldebug is unused. gossip_lerr is used in two places. The messages are unique so line numbers are unnecessary. Also remove support for compiling gossip messages out. It wasn't possible to enable it anyway. Signed-off-by: Martin Brandenburg --- fs/orangefs/orangefs-debugfs.c | 2

[PATCH for 4.15] orangefs: fix deadlock; do not write i_size in read_iter

2018-01-25 Thread Martin Brandenburg
After do_readv_writev, the inode cache is invalidated anyway, so i_size will never be read. It will be fetched from the server which will also know about updates from other machines. Fixes deadlock on 32-bit SMP. See https://marc.info/?l=linux-fsdevel=151268557427760=2 Signed-off-by: Martin

[PATCH for 4.15] orangefs: fix deadlock; do not write i_size in read_iter

2018-01-25 Thread Martin Brandenburg
After do_readv_writev, the inode cache is invalidated anyway, so i_size will never be read. It will be fetched from the server which will also know about updates from other machines. Fixes deadlock on 32-bit SMP. See https://marc.info/?l=linux-fsdevel=151268557427760=2 Signed-off-by: Martin

[PATCH 1/2] orangefs: use list_for_each_entry_safe in purge_waiting_ops

2018-01-22 Thread Martin Brandenburg
set_op_state_purged can delete the op. Signed-off-by: Martin Brandenburg <mar...@omnibond.com> Cc: sta...@vger.kernel.org --- fs/orangefs/waitqueue.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/fs/orangefs/waitqueue.c b/fs/orangefs/waitqueue.c index 835c6e

[PATCH 2/2] orangefs: initialize op on loop restart in orangefs_devreq_read

2018-01-22 Thread Martin Brandenburg
to is not reinitialized, so if there are no more eligible ops on the list, the code runs again on the already handled op. This is triggered by interrupting a process while the op is being copied to the client-core. It's a fairly small window, but it's there. Signed-off-by: Martin Brandenburg <

[PATCH 1/2] orangefs: use list_for_each_entry_safe in purge_waiting_ops

2018-01-22 Thread Martin Brandenburg
set_op_state_purged can delete the op. Signed-off-by: Martin Brandenburg Cc: sta...@vger.kernel.org --- fs/orangefs/waitqueue.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/fs/orangefs/waitqueue.c b/fs/orangefs/waitqueue.c index 835c6e148afc..0577d6dba8c8 100644

[PATCH 2/2] orangefs: initialize op on loop restart in orangefs_devreq_read

2018-01-22 Thread Martin Brandenburg
to is not reinitialized, so if there are no more eligible ops on the list, the code runs again on the already handled op. This is triggered by interrupting a process while the op is being copied to the client-core. It's a fairly small window, but it's there. Signed-off-by: Martin Brandenburg Cc

  1   2   3   >