* [GIT PULL] f2fs updates for v4.6
@ 2016-03-18 0:58 Jaegeuk Kim
2016-03-18 2:32 ` Linus Torvalds
0 siblings, 1 reply; 17+ messages in thread
From: Jaegeuk Kim @ 2016-03-18 0:58 UTC (permalink / raw)
To: Linus Torvalds
Cc: Linux FS Dev Mailing List, Linux Kernel Mailing List,
Linux F2FS Dev Mailing List
Hi Linus,
Could you please pull the below patches?
Note that, I did cherry-pick one patch and add another patch to resolve the
conflict against recent crypto changes.
- cherry-picked
4bedd9f487276290c49de9b0aad8cbf7ff847543
f2fs: Use skcipher
- add
1288a901a4c85aeea183937f8e8343d6187690ac
fs crypto: resolve conflicts on crypto changes
The following changes since commit 4de8ebeff8ddefaceeb7fc6a9b1a514fc9624509:
Merge tag 'trace-fixes-v4.5-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace (2016-02-22 14:09:18 -0800)
are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs.git tags/for-f2fs-4.6
for you to fetch changes up to bccf535404a3bb97031d1961ad3e229a65e9fa5b:
f2fs: submit node page write bios when really required (2016-03-17 16:36:37 -0700)
----------------------------------------------------------------
= New Features =
- uplift filesystem encryption into fs/crypto/
- give sysfs entries to control memroy consumption
= Enhancement ==
- aio performance by preallocating blocks in ->write_iter
- use writepages lock for only WB_SYNC_ALL
- avoid redundant inline_data conversion
- enhance forground GC
- use wait_for_stable_page as possible
- speed up SEEK_DATA and fiiemap
= Bug Fixes =
- corner case in terms of -ENOSPC for inline_data
- hung task caused by long latency in shrinker
- corruption between atomic write and f2fs_trace_pid
- avoid garbage lengths in dentries
- revoke atomicly written pages if an error occurs
In addition, there are various minor bug fixes and clean-ups.
----------------------------------------------------------------
Arnd Bergmann (1):
f2fs: add missing argument to f2fs_setxattr stub
Chao Yu (33):
f2fs: relocate is_merged_page
f2fs: flush dirty nat entries when exceeding threshold
f2fs: export dirty_nats_ratio in sysfs
f2fs: correct search area in get_new_segment
f2fs: enhance foreground GC
f2fs: simplify f2fs_map_blocks
f2fs: simplify __allocate_data_blocks
f2fs: remove unneeded pointer conversion
f2fs: introduce get_next_page_offset to speed up SEEK_DATA
f2fs: speed up handling holes in fiemap
f2fs: introduce f2fs_submit_merged_bio_cond
f2fs: split drop_inmem_pages from commit_inmem_pages
f2fs: support revoking atomic written pages
f2fs crypto: make sure the encryption info is initialized on opendir(2)
f2fs crypto: handle unexpected lack of encryption keys
f2fs crypto: avoid unneeded memory allocation when {en/de}crypting symlink
f2fs: introduce f2fs_journal struct to wrap journal info
f2fs: enhance IO path with block plug
f2fs: split journal cache from curseg cache
f2fs: reorder nat cache lock in cache_nat_entry
f2fs: detect error of update_dent_inode in ->rename
f2fs: fix to delete old dirent in converted inline directory in ->rename
f2fs: fix the wrong stat count of calling gc
f2fs: show more info about superblock recovery
f2fs: try to flush inode after merging inline data
f2fs: trace old block address for CoWed page
f2fs: fix incorrect upper bound when iterating inode mapping tree
f2fs crypto: fix incorrect positioning for GCing encrypted data page
f2fs: introduce f2fs_update_data_blkaddr for cleanup
f2fs: introduce f2fs_flush_merged_bios for cleanup
f2fs: fix to avoid deadlock when merging inline data
f2fs: clean up opened code with f2fs_update_dentry
f2fs: fix to avoid unneeded unlock_new_inode
Fan Li (2):
f2fs: avoid unnecessary search while finding victim in gc
f2fs: modify the readahead method in ra_node_page()
Herbert Xu (1):
f2fs: Use skcipher
Hou Pengyang (2):
f2fs: reconstruct the code to free an extent_node
f2fs: improve shrink performance of extent nodes
Jaegeuk Kim (40):
f2fs: remove needless condition check
f2fs: use writepages->lock for WB_SYNC_ALL
f2fs: fix to overcome inline_data floods
f2fs: do f2fs_balance_fs when block is allocated
f2fs: avoid multiple node page writes due to inline_data
f2fs: don't need to sync node page at every time
f2fs: avoid needless sync_inode_page when reading inline_data
f2fs: don't need to call set_page_dirty for io error
f2fs: use wait_for_stable_page to avoid contention
f2fs: use wq_has_sleeper for cp_wait wait_queue
f2fs: move extent_node list operations being coupled with rbtree operation
f2fs: don't set cached_en if it will be freed
f2fs: give scheduling point in shrinking path
f2fs: wait on page's writeback in writepages path
f2fs: flush bios to handle cp_error in put_super
f2fs: fix conflict on page->private usage
f2fs: move dio preallocation into f2fs_file_write_iter
f2fs: preallocate blocks for buffered aio writes
f2fs: increase i_size to avoid missing data
f2fs crypto: replace some BUG_ON()'s with error checks
f2fs crypto: fix spelling typo in comment
f2fs crypto: f2fs_page_crypto() doesn't need a encryption context
f2fs crypto: check for too-short encrypted file names
f2fs crypto: add missing locking for keyring_key access
f2fs: use correct errno
f2fs crypto: sync with ext4's fname padding
f2fs: avoid garbage lenghs in dentries
f2fs: remain last victim segment number ascending order
fs crypto: add basic definitions for per-file encryption
fs crypto: add crypto.c for encrypt/decrypt functions
fs crypto: add policy.c to handle contexts
fs crypto: add keyinfo.c to handle permissions
fs crypto: add fname.c to support filename encryption
fs crypto: resolve conflicts on crypto changes
fs crypto: add Makefile and Kconfig
fs crypto: add dentry revalidation facility in crypto
f2fs crypto: migrate into vfs's crypto engine
f2fs crypto: sync ext4_lookup and ext4_file_open
f2fs: declare static functions
f2fs: submit node page write bios when really required
Keith Mok (1):
f2fs: use cryptoapi crc32 functions
Liu Xue (1):
f2fs: recovery missing dot dentries in root directory
Shawn Lin (3):
f2fs: slightly reorganize read_raw_super_block
f2fs: move sanity checking of cp into get_valid_checkpoint
f2fs: reuse read_inline_data for f2fs_convert_inline_page
Sheng Yong (1):
f2fs: fix endianness of on-disk summary_footer
Shuoran Liu (1):
f2fs: introduce lifetime write IO statistics
Yang Shi (1):
f2fs: mutex can't be used by down_write_nest_lock()
Yunlei He (3):
f2fs: delete unnecessary wait for page writeback
f2fs: fix missing skip pages info
f2fs: avoid hungtask problem caused by losing wake_up
Documentation/ABI/testing/sysfs-fs-f2fs | 14 +
fs/Kconfig | 2 +
fs/Makefile | 1 +
fs/crypto/Kconfig | 18 +
fs/crypto/Makefile | 3 +
fs/crypto/crypto.c | 556 +++++++++++++++++++++++++++++
fs/{f2fs/crypto_fname.c => crypto/fname.c} | 277 +++++++-------
fs/crypto/keyinfo.c | 273 ++++++++++++++
fs/crypto/policy.c | 229 ++++++++++++
fs/f2fs/Kconfig | 12 +-
fs/f2fs/Makefile | 2 -
fs/f2fs/checkpoint.c | 77 ++--
fs/f2fs/crypto.c | 491 -------------------------
fs/f2fs/crypto_key.c | 254 -------------
fs/f2fs/crypto_policy.c | 209 -----------
fs/f2fs/data.c | 428 +++++++++++-----------
fs/f2fs/dir.c | 94 ++---
fs/f2fs/extent_cache.c | 176 ++++-----
fs/f2fs/f2fs.h | 315 +++++++---------
fs/f2fs/f2fs_crypto.h | 151 --------
fs/f2fs/file.c | 114 +++---
fs/f2fs/gc.c | 245 +++++++------
fs/f2fs/inline.c | 43 +--
fs/f2fs/inode.c | 15 +-
fs/f2fs/namei.c | 168 +++++----
fs/f2fs/node.c | 223 ++++++++----
fs/f2fs/node.h | 26 +-
fs/f2fs/recovery.c | 14 +-
fs/f2fs/segment.c | 386 ++++++++++++--------
fs/f2fs/segment.h | 5 +-
fs/f2fs/super.c | 204 +++++++----
fs/f2fs/trace.c | 6 +-
fs/f2fs/xattr.c | 6 +-
fs/f2fs/xattr.h | 3 +-
include/linux/dcache.h | 2 +
include/linux/f2fs_fs.h | 34 +-
include/linux/fs.h | 8 +
include/linux/fscrypto.h | 433 ++++++++++++++++++++++
include/trace/events/f2fs.h | 12 +-
include/uapi/linux/fs.h | 18 +
40 files changed, 3152 insertions(+), 2395 deletions(-)
create mode 100644 fs/crypto/Kconfig
create mode 100644 fs/crypto/Makefile
create mode 100644 fs/crypto/crypto.c
rename fs/{f2fs/crypto_fname.c => crypto/fname.c} (54%)
create mode 100644 fs/crypto/keyinfo.c
create mode 100644 fs/crypto/policy.c
delete mode 100644 fs/f2fs/crypto.c
delete mode 100644 fs/f2fs/crypto_key.c
delete mode 100644 fs/f2fs/crypto_policy.c
delete mode 100644 fs/f2fs/f2fs_crypto.h
create mode 100644 include/linux/fscrypto.h
------------------------------------------------------------------------------
Transform Data into Opportunity.
Accelerate data analysis in your applications with
Intel Data Analytics Acceleration Library.
Click to learn more.
http://pubads.g.doubleclick.net/gampad/clk?id=278785231&iu=/4140
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [GIT PULL] f2fs updates for v4.6
2016-03-18 0:58 Jaegeuk Kim
@ 2016-03-18 2:32 ` Linus Torvalds
2016-03-18 2:35 ` Linus Torvalds
2016-03-18 5:00 ` Jaegeuk Kim
0 siblings, 2 replies; 17+ messages in thread
From: Linus Torvalds @ 2016-03-18 2:32 UTC (permalink / raw)
To: Jaegeuk Kim
Cc: Linux Kernel Mailing List, Linux FS Dev Mailing List,
Linux F2FS Dev Mailing List
On Thu, Mar 17, 2016 at 5:58 PM, Jaegeuk Kim <jaegeuk@kernel.org> wrote:
>
> Note that, I did cherry-pick one patch and add another patch to resolve the
> conflict against recent crypto changes.
*please* don't do things like this!
Now I have a conflict _anyway_, and because you added extra commits it
ends up being just messier. Git notices that you renamed
fs/f2fs/crypto_fname.c into fs/crypto/fname.c, and sees that different
people did different things, so now your "merge resolution" conflicts
with the changes I already merged to the original file from the crypto
tree.
Yes, yes, since you also did that "f2fs: Use skcipher", the resolution
now is to just throw the extra merge resolution away, but it's
literally just messier and more work for me, because it makes even
less sense than it would have done to just do the merge resolution
directly.
I do *not* want maintainers of two different trees trying to resolve
things against each other ahead of time. It makes no sense, and it
makes the history make no sense.
Now, if a merge ends up being really painful, I might ask you to help
resolve a merge, but quite frankly, that is very very rare.
I'd much *much* rather see you just do stuff that makes sense for your
tree. In particular, you really should have done that "move file" as a
single file move commit, and just left it at that. Instead, your tree
does something insane:
- first it cherry-picks the change from the crypto tree
- then it *copies* the old file to fs/crypto/fname.c, and changes the
naming to match.
- at this point nothing actually *uses* the new file or new naming at all.
- then it "resolves the merge conflict" by re-doing *AGAIN* that
crypto change that it shouldn't have cared about in the first place
- then it removes the old file and switches to the new naming in the users
That makes no sense what-so-ever.
What would have been *sensible* would have been to split it up in a
*natural* way:
- move the file to a new subdirectory in one commit (together with
the Makefile/Kconfig stuff that enables it)
- change the naming to match the new location in another.
or even just do it all in one single step. And at no point worry about
the fact that the crypto tree did something unrelated to your work.
You should aim to make the changes make sense in *your* tree. Not copy
and create files that aren't used until the next stage. Not pre-merge
with another completely unrelated tree.
Now you actually did extra work apparently to "help", but what it
caused was for me to have to try to figure out those crazy steps, and
it made the history just uglier.
And note that even if I didn't have a conflict (git didn't notice that
there were a few other files that moved too, because the renaming made
the file contents too different), I would still have preferred to
simply do the conflict resolution at the time of the merge, rather
than have it pre-done.
Put another way: you doing the "pre-merge" resolution ends up making
my merge simpler from a purely technical standpoint, but it also makes
the history make very little sense. I'd much rather have the history
make sense, and then in the actual *merge* when the f2fs tree really
meets the crypto tree updates, the resolution fixes things up (and
then the resolution makes sense within those confines too).
And never add files that aren't even used. Now we literally have this
insane situation that commit 7690143802f1 ("fs crypto: add crypto.c
for encrypt/decrypt functions") adds a new directory, and a new file
in it, but there is absolutely nothing that references that new file.
So it's all completely empty work.
Then later, you add the Makefile and Kconfig rules to start building
the files, but still nothing *uses* it.
And then, after that, you have one commit that removes the old code,
and switches over to the new code.
Not only does none of this make ANY SENSE WHAT-SO-EVER, but it's a
complete nightmare if something breaks. The point you *notice* that
things break is when you switch over the new code, but that isn't
actually when the new code happens, so now you have this situation
where the commit that introduces the breakage basically silently
introduces all that old code that was never actually used - but it's
not shown in that commit!
This is why I think you should have just renamed the files one by one,
and actually started using them as you go along. See? Not only would
it make more sense, but when a problem happens, you actually see what
causes it, instead of it being a "oh, we switched over to that
completely different code that had never been used by anything at all
before".
Linus
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [GIT PULL] f2fs updates for v4.6
2016-03-18 2:32 ` Linus Torvalds
@ 2016-03-18 2:35 ` Linus Torvalds
2016-03-18 5:00 ` Jaegeuk Kim
1 sibling, 0 replies; 17+ messages in thread
From: Linus Torvalds @ 2016-03-18 2:35 UTC (permalink / raw)
To: Jaegeuk Kim
Cc: Linux Kernel Mailing List, Linux FS Dev Mailing List,
Linux F2FS Dev Mailing List
On Thu, Mar 17, 2016 at 7:32 PM, Linus Torvalds
<torvalds@linux-foundation.org> wrote:
\>
> Then later, you add the Makefile and Kconfig rules to start building
> the files, but still nothing *uses* it.
>
> And then, after that, you have one commit that removes the old code,
> and switches over to the new code.
Oh, and after I actually finished the merge and did the test-compile,
I notice that much of this work has been rebased in the last hour or
two.
No. Just no.
I'm unpulling. None of this makes any sense. I can't take stuff like this.
Linus
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [GIT PULL] f2fs updates for v4.6
2016-03-18 2:32 ` Linus Torvalds
2016-03-18 2:35 ` Linus Torvalds
@ 2016-03-18 5:00 ` Jaegeuk Kim
1 sibling, 0 replies; 17+ messages in thread
From: Jaegeuk Kim @ 2016-03-18 5:00 UTC (permalink / raw)
To: Linus Torvalds
Cc: Linux Kernel Mailing List, Linux FS Dev Mailing List,
Linux F2FS Dev Mailing List
On Thu, Mar 17, 2016 at 07:32:34PM -0700, Linus Torvalds wrote:
> On Thu, Mar 17, 2016 at 5:58 PM, Jaegeuk Kim <jaegeuk@kernel.org> wrote:
> >
> > Note that, I did cherry-pick one patch and add another patch to resolve the
> > conflict against recent crypto changes.
>
> *please* don't do things like this!
My apologies.
I'll definitely keep in mind.
And, thank you for explaining what I did so insanely.
I can understand how I made a mistake which makes the git history much uglier
as well as unnecessary commits which make it much harder to investigate any
problem.
Let me undo my recent unnecessary extra work and add a single commit that
migrates the crypto codes.
Then, let me repost a pull request later again.
Sorry for the confusion.
Thanks,
>
> Now I have a conflict _anyway_, and because you added extra commits it
> ends up being just messier. Git notices that you renamed
> fs/f2fs/crypto_fname.c into fs/crypto/fname.c, and sees that different
> people did different things, so now your "merge resolution" conflicts
> with the changes I already merged to the original file from the crypto
> tree.
>
> Yes, yes, since you also did that "f2fs: Use skcipher", the resolution
> now is to just throw the extra merge resolution away, but it's
> literally just messier and more work for me, because it makes even
> less sense than it would have done to just do the merge resolution
> directly.
>
> I do *not* want maintainers of two different trees trying to resolve
> things against each other ahead of time. It makes no sense, and it
> makes the history make no sense.
>
> Now, if a merge ends up being really painful, I might ask you to help
> resolve a merge, but quite frankly, that is very very rare.
>
> I'd much *much* rather see you just do stuff that makes sense for your
> tree. In particular, you really should have done that "move file" as a
> single file move commit, and just left it at that. Instead, your tree
> does something insane:
>
> - first it cherry-picks the change from the crypto tree
>
> - then it *copies* the old file to fs/crypto/fname.c, and changes the
> naming to match.
>
> - at this point nothing actually *uses* the new file or new naming at all.
>
> - then it "resolves the merge conflict" by re-doing *AGAIN* that
> crypto change that it shouldn't have cared about in the first place
>
> - then it removes the old file and switches to the new naming in the users
>
> That makes no sense what-so-ever.
>
> What would have been *sensible* would have been to split it up in a
> *natural* way:
>
> - move the file to a new subdirectory in one commit (together with
> the Makefile/Kconfig stuff that enables it)
>
> - change the naming to match the new location in another.
>
> or even just do it all in one single step. And at no point worry about
> the fact that the crypto tree did something unrelated to your work.
>
> You should aim to make the changes make sense in *your* tree. Not copy
> and create files that aren't used until the next stage. Not pre-merge
> with another completely unrelated tree.
>
> Now you actually did extra work apparently to "help", but what it
> caused was for me to have to try to figure out those crazy steps, and
> it made the history just uglier.
>
> And note that even if I didn't have a conflict (git didn't notice that
> there were a few other files that moved too, because the renaming made
> the file contents too different), I would still have preferred to
> simply do the conflict resolution at the time of the merge, rather
> than have it pre-done.
>
> Put another way: you doing the "pre-merge" resolution ends up making
> my merge simpler from a purely technical standpoint, but it also makes
> the history make very little sense. I'd much rather have the history
> make sense, and then in the actual *merge* when the f2fs tree really
> meets the crypto tree updates, the resolution fixes things up (and
> then the resolution makes sense within those confines too).
>
> And never add files that aren't even used. Now we literally have this
> insane situation that commit 7690143802f1 ("fs crypto: add crypto.c
> for encrypt/decrypt functions") adds a new directory, and a new file
> in it, but there is absolutely nothing that references that new file.
> So it's all completely empty work.
>
> Then later, you add the Makefile and Kconfig rules to start building
> the files, but still nothing *uses* it.
>
> And then, after that, you have one commit that removes the old code,
> and switches over to the new code.
>
> Not only does none of this make ANY SENSE WHAT-SO-EVER, but it's a
> complete nightmare if something breaks. The point you *notice* that
> things break is when you switch over the new code, but that isn't
> actually when the new code happens, so now you have this situation
> where the commit that introduces the breakage basically silently
> introduces all that old code that was never actually used - but it's
> not shown in that commit!
>
> This is why I think you should have just renamed the files one by one,
> and actually started using them as you go along. See? Not only would
> it make more sense, but when a problem happens, you actually see what
> causes it, instead of it being a "oh, we switched over to that
> completely different code that had never been used by anything at all
> before".
>
> Linus
^ permalink raw reply [flat|nested] 17+ messages in thread
* [GIT PULL] f2fs updates for v4.6
@ 2016-03-20 22:58 Jaegeuk Kim
2016-03-21 18:09 ` Linus Torvalds
0 siblings, 1 reply; 17+ messages in thread
From: Jaegeuk Kim @ 2016-03-20 22:58 UTC (permalink / raw)
To: Linus Torvalds
Cc: Linux FS Dev Mailing List, Linux Kernel Mailing List,
Linux F2FS Dev Mailing List
Hi Linus,
I made another pull request which removes the previous wrong commits and adds
a single commit to migrate the f2fs crypto into fs/crypto.
Could you please consider to pull this?
Thanks,
The following changes since commit 4de8ebeff8ddefaceeb7fc6a9b1a514fc9624509:
Merge tag 'trace-fixes-v4.5-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace (2016-02-22 14:09:18 -0800)
are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs.git tags/for-f2fs-4.6
for you to fetch changes up to 12bb0a8fd47e6020a7b52dc283a2d855f03d6ef5:
f2fs: submit node page write bios when really required (2016-03-17 21:19:47 -0700)
----------------------------------------------------------------
= New Features =
- uplift filesystem encryption into fs/crypto/
- give sysfs entries to control memroy consumption
= Enhancement ==
- aio performance by preallocating blocks in ->write_iter
- use writepages lock for only WB_SYNC_ALL
- avoid redundant inline_data conversion
- enhance forground GC
- use wait_for_stable_page as possible
- speed up SEEK_DATA and fiiemap
= Bug Fixes =
- corner case in terms of -ENOSPC for inline_data
- hung task caused by long latency in shrinker
- corruption between atomic write and f2fs_trace_pid
- avoid garbage lengths in dentries
- revoke atomicly written pages if an error occurs
In addition, there are various minor bug fixes and clean-ups.
----------------------------------------------------------------
Arnd Bergmann (1):
f2fs: add missing argument to f2fs_setxattr stub
Chao Yu (33):
f2fs: relocate is_merged_page
f2fs: flush dirty nat entries when exceeding threshold
f2fs: export dirty_nats_ratio in sysfs
f2fs: correct search area in get_new_segment
f2fs: enhance foreground GC
f2fs: simplify f2fs_map_blocks
f2fs: simplify __allocate_data_blocks
f2fs: remove unneeded pointer conversion
f2fs: introduce get_next_page_offset to speed up SEEK_DATA
f2fs: speed up handling holes in fiemap
f2fs: introduce f2fs_submit_merged_bio_cond
f2fs: split drop_inmem_pages from commit_inmem_pages
f2fs: support revoking atomic written pages
f2fs crypto: make sure the encryption info is initialized on opendir(2)
f2fs crypto: handle unexpected lack of encryption keys
f2fs crypto: avoid unneeded memory allocation when {en/de}crypting symlink
f2fs: introduce f2fs_journal struct to wrap journal info
f2fs: enhance IO path with block plug
f2fs: split journal cache from curseg cache
f2fs: reorder nat cache lock in cache_nat_entry
f2fs: detect error of update_dent_inode in ->rename
f2fs: fix to delete old dirent in converted inline directory in ->rename
f2fs: fix the wrong stat count of calling gc
f2fs: show more info about superblock recovery
f2fs: try to flush inode after merging inline data
f2fs: trace old block address for CoWed page
f2fs: fix incorrect upper bound when iterating inode mapping tree
f2fs crypto: fix incorrect positioning for GCing encrypted data page
f2fs: introduce f2fs_update_data_blkaddr for cleanup
f2fs: introduce f2fs_flush_merged_bios for cleanup
f2fs: fix to avoid deadlock when merging inline data
f2fs: clean up opened code with f2fs_update_dentry
f2fs: fix to avoid unneeded unlock_new_inode
Fan Li (2):
f2fs: avoid unnecessary search while finding victim in gc
f2fs: modify the readahead method in ra_node_page()
Hou Pengyang (2):
f2fs: reconstruct the code to free an extent_node
f2fs: improve shrink performance of extent nodes
Jaegeuk Kim (32):
f2fs: remove needless condition check
f2fs: use writepages->lock for WB_SYNC_ALL
f2fs: fix to overcome inline_data floods
f2fs: do f2fs_balance_fs when block is allocated
f2fs: avoid multiple node page writes due to inline_data
f2fs: don't need to sync node page at every time
f2fs: avoid needless sync_inode_page when reading inline_data
f2fs: don't need to call set_page_dirty for io error
f2fs: use wait_for_stable_page to avoid contention
f2fs: use wq_has_sleeper for cp_wait wait_queue
f2fs: move extent_node list operations being coupled with rbtree operation
f2fs: don't set cached_en if it will be freed
f2fs: give scheduling point in shrinking path
f2fs: wait on page's writeback in writepages path
f2fs: flush bios to handle cp_error in put_super
f2fs: fix conflict on page->private usage
f2fs: move dio preallocation into f2fs_file_write_iter
f2fs: preallocate blocks for buffered aio writes
f2fs: increase i_size to avoid missing data
f2fs crypto: replace some BUG_ON()'s with error checks
f2fs crypto: fix spelling typo in comment
f2fs crypto: f2fs_page_crypto() doesn't need a encryption context
f2fs crypto: check for too-short encrypted file names
f2fs crypto: add missing locking for keyring_key access
f2fs: use correct errno
f2fs crypto: sync with ext4's fname padding
f2fs: avoid garbage lenghs in dentries
f2fs: remain last victim segment number ascending order
fs crypto: move per-file encryption from f2fs tree to fs/crypto
f2fs crypto: sync ext4_lookup and ext4_file_open
f2fs: declare static functions
f2fs: submit node page write bios when really required
Keith Mok (1):
f2fs: use cryptoapi crc32 functions
Liu Xue (1):
f2fs: recovery missing dot dentries in root directory
Shawn Lin (3):
f2fs: slightly reorganize read_raw_super_block
f2fs: move sanity checking of cp into get_valid_checkpoint
f2fs: reuse read_inline_data for f2fs_convert_inline_page
Sheng Yong (1):
f2fs: fix endianness of on-disk summary_footer
Shuoran Liu (1):
f2fs: introduce lifetime write IO statistics
Yang Shi (1):
f2fs: mutex can't be used by down_write_nest_lock()
Yunlei He (3):
f2fs: delete unnecessary wait for page writeback
f2fs: fix missing skip pages info
f2fs: avoid hungtask problem caused by losing wake_up
Documentation/ABI/testing/sysfs-fs-f2fs | 14 +
fs/Kconfig | 2 +
fs/Makefile | 1 +
fs/crypto/Kconfig | 18 +
fs/crypto/Makefile | 3 +
fs/crypto/crypto.c | 556 +++++++++++++++++++++++++++++
fs/{f2fs/crypto_fname.c => crypto/fname.c} | 245 ++++++-------
fs/crypto/keyinfo.c | 278 +++++++++++++++
fs/crypto/policy.c | 229 ++++++++++++
fs/f2fs/Kconfig | 12 +-
fs/f2fs/Makefile | 2 -
fs/f2fs/checkpoint.c | 77 ++--
fs/f2fs/crypto.c | 491 -------------------------
fs/f2fs/crypto_key.c | 254 -------------
fs/f2fs/crypto_policy.c | 209 -----------
fs/f2fs/data.c | 428 +++++++++++-----------
fs/f2fs/dir.c | 94 ++---
fs/f2fs/extent_cache.c | 176 ++++-----
fs/f2fs/f2fs.h | 315 +++++++---------
fs/f2fs/f2fs_crypto.h | 151 --------
fs/f2fs/file.c | 114 +++---
fs/f2fs/gc.c | 245 +++++++------
fs/f2fs/inline.c | 43 +--
fs/f2fs/inode.c | 15 +-
fs/f2fs/namei.c | 168 +++++----
fs/f2fs/node.c | 223 ++++++++----
fs/f2fs/node.h | 26 +-
fs/f2fs/recovery.c | 14 +-
fs/f2fs/segment.c | 386 ++++++++++++--------
fs/f2fs/segment.h | 5 +-
fs/f2fs/super.c | 204 +++++++----
fs/f2fs/trace.c | 6 +-
fs/f2fs/xattr.c | 6 +-
fs/f2fs/xattr.h | 3 +-
include/linux/dcache.h | 2 +
include/linux/f2fs_fs.h | 34 +-
include/linux/fs.h | 8 +
include/linux/fscrypto.h | 433 ++++++++++++++++++++++
include/trace/events/f2fs.h | 12 +-
include/uapi/linux/fs.h | 18 +
40 files changed, 3142 insertions(+), 2378 deletions(-)
create mode 100644 fs/crypto/Kconfig
create mode 100644 fs/crypto/Makefile
create mode 100644 fs/crypto/crypto.c
rename fs/{f2fs/crypto_fname.c => crypto/fname.c} (60%)
create mode 100644 fs/crypto/keyinfo.c
create mode 100644 fs/crypto/policy.c
delete mode 100644 fs/f2fs/crypto.c
delete mode 100644 fs/f2fs/crypto_key.c
delete mode 100644 fs/f2fs/crypto_policy.c
delete mode 100644 fs/f2fs/f2fs_crypto.h
create mode 100644 include/linux/fscrypto.h
------------------------------------------------------------------------------
Transform Data into Opportunity.
Accelerate data analysis in your applications with
Intel Data Analytics Acceleration Library.
Click to learn more.
http://pubads.g.doubleclick.net/gampad/clk?id=278785231&iu=/4140
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [GIT PULL] f2fs updates for v4.6
2016-03-20 22:58 [GIT PULL] f2fs updates for v4.6 Jaegeuk Kim
@ 2016-03-21 18:09 ` Linus Torvalds
2016-03-21 18:45 ` Jaegeuk Kim
0 siblings, 1 reply; 17+ messages in thread
From: Linus Torvalds @ 2016-03-21 18:09 UTC (permalink / raw)
To: Jaegeuk Kim
Cc: Linux FS Dev Mailing List, Linux Kernel Mailing List,
Linux F2FS Dev Mailing List
On Sun, Mar 20, 2016 at 3:58 PM, Jaegeuk Kim <jaegeuk@kernel.org> wrote:
>
> I made another pull request which removes the previous wrong commits and adds
> a single commit to migrate the f2fs crypto into fs/crypto.
Ok, merged. Please double-check the end result, but since most of the
skcipher update was literally to just change "ablk" to "sk", the merge
seems to have been pretty trivial.
It all compiles for me, but since I don't use f2fs, I have nothing to test.
(It's not pushed out quite yet - I'm still test-building everything
else, so if you pull my tree and don't see the merge, wait a few
minutes and it should be there).
Linus
------------------------------------------------------------------------------
Transform Data into Opportunity.
Accelerate data analysis in your applications with
Intel Data Analytics Acceleration Library.
Click to learn more.
http://pubads.g.doubleclick.net/gampad/clk?id=278785351&iu=/4140
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [GIT PULL] f2fs updates for v4.6
2016-03-21 18:09 ` Linus Torvalds
@ 2016-03-21 18:45 ` Jaegeuk Kim
2016-03-26 6:10 ` Eric Biggers
0 siblings, 1 reply; 17+ messages in thread
From: Jaegeuk Kim @ 2016-03-21 18:45 UTC (permalink / raw)
To: Linus Torvalds
Cc: Linux FS Dev Mailing List, Linux Kernel Mailing List,
Linux F2FS Dev Mailing List
On Mon, Mar 21, 2016 at 11:09:45AM -0700, Linus Torvalds wrote:
> On Sun, Mar 20, 2016 at 3:58 PM, Jaegeuk Kim <jaegeuk@kernel.org> wrote:
> >
> > I made another pull request which removes the previous wrong commits and adds
> > a single commit to migrate the f2fs crypto into fs/crypto.
>
> Ok, merged. Please double-check the end result, but since most of the
> skcipher update was literally to just change "ablk" to "sk", the merge
> seems to have been pretty trivial.
>
> It all compiles for me, but since I don't use f2fs, I have nothing to test.
Thank you very much for the merge.
I got the merged branch, and started testing f2fs.
Thanks,
>
> (It's not pushed out quite yet - I'm still test-building everything
> else, so if you pull my tree and don't see the merge, wait a few
> minutes and it should be there).
>
> Linus
------------------------------------------------------------------------------
Transform Data into Opportunity.
Accelerate data analysis in your applications with
Intel Data Analytics Acceleration Library.
Click to learn more.
http://pubads.g.doubleclick.net/gampad/clk?id=278785351&iu=/4140
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [GIT PULL] f2fs updates for v4.6
2016-03-21 18:45 ` Jaegeuk Kim
@ 2016-03-26 6:10 ` Eric Biggers
2016-03-26 8:56 ` Jaegeuk Kim
0 siblings, 1 reply; 17+ messages in thread
From: Eric Biggers @ 2016-03-26 6:10 UTC (permalink / raw)
To: Jaegeuk Kim
Cc: Linux FS Dev Mailing List, Linus Torvalds,
Linux Kernel Mailing List, Linux F2FS Dev Mailing List
Why was the XTS tweak initialization changed in commit 0b81d0779072 ("fs crypto:
move per-file encryption from f2fs tree to fs/crypto")?
Old code:
memcpy(xts_tweak, &index, sizeof(index));
memset(&xts_tweak[sizeof(index)], 0,
F2FS_XTS_TWEAK_SIZE - sizeof(index));
New code:
memcpy(xts_tweak, &inode->i_ino, sizeof(index));
memset(&xts_tweak[sizeof(index)], 0,
FS_XTS_TWEAK_SIZE - sizeof(index));
Now the XTS tweak is the same for all pages of each inode.
------------------------------------------------------------------------------
Transform Data into Opportunity.
Accelerate data analysis in your applications with
Intel Data Analytics Acceleration Library.
Click to learn more.
http://pubads.g.doubleclick.net/gampad/clk?id=278785351&iu=/4140
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [GIT PULL] f2fs updates for v4.6
2016-03-26 6:10 ` Eric Biggers
@ 2016-03-26 8:56 ` Jaegeuk Kim
2016-03-26 13:47 ` Eric Biggers
0 siblings, 1 reply; 17+ messages in thread
From: Jaegeuk Kim @ 2016-03-26 8:56 UTC (permalink / raw)
To: Eric Biggers
Cc: Linus Torvalds, Linux Kernel Mailing List,
Linux FS Dev Mailing List, Linux F2FS Dev Mailing List
On Sat, Mar 26, 2016 at 01:10:07AM -0500, Eric Biggers wrote:
> Why was the XTS tweak initialization changed in commit 0b81d0779072 ("fs crypto:
> move per-file encryption from f2fs tree to fs/crypto")?
>
> Old code:
>
> memcpy(xts_tweak, &index, sizeof(index));
> memset(&xts_tweak[sizeof(index)], 0,
> F2FS_XTS_TWEAK_SIZE - sizeof(index));
>
> New code:
> memcpy(xts_tweak, &inode->i_ino, sizeof(index));
> memset(&xts_tweak[sizeof(index)], 0,
> FS_XTS_TWEAK_SIZE - sizeof(index));
>
> Now the XTS tweak is the same for all pages of each inode.
Thank you for catching this.
I've checked several times, but turns out I missed something tho. :(
Let me write a patch to fix this.
Thanks,
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [GIT PULL] f2fs updates for v4.6
2016-03-26 8:56 ` Jaegeuk Kim
@ 2016-03-26 13:47 ` Eric Biggers
2016-03-26 17:53 ` Linus Torvalds
0 siblings, 1 reply; 17+ messages in thread
From: Eric Biggers @ 2016-03-26 13:47 UTC (permalink / raw)
To: Jaegeuk Kim
Cc: Linus Torvalds, Linux Kernel Mailing List,
Linux FS Dev Mailing List, Linux F2FS Dev Mailing List
It seems strange to me --- a "renaming" commit made IVs start getting reused,
weakening the encryption. Do you have an explanation for how this change got
introduced?
Another question about the choice of IV. If the page index in CPU order is
(supposed to be) used as the IV, doesn't make the on-disk format of the
filesystem endianness-dependent? I thought that's a big no-no.
On Sat, Mar 26, 2016 at 01:56:06AM -0700, Jaegeuk Kim wrote:
> On Sat, Mar 26, 2016 at 01:10:07AM -0500, Eric Biggers wrote:
> > Why was the XTS tweak initialization changed in commit 0b81d0779072 ("fs crypto:
> > move per-file encryption from f2fs tree to fs/crypto")?
> >
> > Old code:
> >
> > memcpy(xts_tweak, &index, sizeof(index));
> > memset(&xts_tweak[sizeof(index)], 0,
> > F2FS_XTS_TWEAK_SIZE - sizeof(index));
> >
> > New code:
> > memcpy(xts_tweak, &inode->i_ino, sizeof(index));
> > memset(&xts_tweak[sizeof(index)], 0,
> > FS_XTS_TWEAK_SIZE - sizeof(index));
> >
> > Now the XTS tweak is the same for all pages of each inode.
>
> Thank you for catching this.
> I've checked several times, but turns out I missed something tho. :(
> Let me write a patch to fix this.
>
> Thanks,
>
>
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [GIT PULL] f2fs updates for v4.6
2016-03-26 13:47 ` Eric Biggers
@ 2016-03-26 17:53 ` Linus Torvalds
2016-03-26 20:00 ` Jaegeuk Kim
2016-03-26 20:41 ` Theodore Ts'o
0 siblings, 2 replies; 17+ messages in thread
From: Linus Torvalds @ 2016-03-26 17:53 UTC (permalink / raw)
To: Eric Biggers
Cc: Jaegeuk Kim, Linux Kernel Mailing List, Linux FS Dev Mailing List,
Linux F2FS Dev Mailing List, Michael Halcrow
Good catch, Eric.
While waiting for explanations, I've committed the change to move back
to just the page index.
On Sat, Mar 26, 2016 at 6:47 AM, Eric Biggers <ebiggers3@gmail.com> wrote:
>
> Another question about the choice of IV. If the page index in CPU order is
> (supposed to be) used as the IV, doesn't make the on-disk format of the
> filesystem endianness-dependent? I thought that's a big no-no.
It is indeed a bad design choice, but at the same time I think it's
time to just admit that big-endian is largely dead, and people don't
necessarily need to worry about it too much. It makes it impossible to
move a disk image from x86 and ARM to Sparc or BE powerpc, but it's
not like anybody is actually going to do that. And PowerPC is moving
towards LE particularly in environments that have any kind of sharing
going on.
The code itself seems largely identical between ext4 and f2fs (which I
assume is the reason for trying to move it to a shared subdirectory),
and is fairly new. It was merged in both back in April of last year,
so I can't tell if one or the other is supposedly the "official" one,
or how much actual use the crypto extensions actually have yet. Adding
Michael Halcrow to the Cc for comments.
I do wonder if it would make sense to just _force_ the use of the
little-endian format, and make that memcpy be a
*(__le64 *)xts_tweak = cpu_to_le64(pgoff);
instead. That would break any existing BE uses, but considering that
this code is fairly new, those may simply not exist.
I also wonder if the xts_tweak should perhaps have both the page
offset _and_ the inode number in it. Both ext4 and f2fs specify that
xts tweak size to be 16 bytes, and right now fill the last 8 bytes
with zero. Would it make sense to just put the inode number in there?
I didn't look at the actual key stuff - maybe the key is already
per-inode and it doesn't make any sense to add the inode info _again_,
but if the key is fs-wide, maybe it would be a good idea? With a mount
option so that you can keep any legacy filesystem images..
Linus
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [GIT PULL] f2fs updates for v4.6
2016-03-26 17:53 ` Linus Torvalds
@ 2016-03-26 20:00 ` Jaegeuk Kim
2016-03-26 20:04 ` Linus Torvalds
2016-03-26 20:41 ` Theodore Ts'o
1 sibling, 1 reply; 17+ messages in thread
From: Jaegeuk Kim @ 2016-03-26 20:00 UTC (permalink / raw)
To: Linus Torvalds
Cc: Eric Biggers, Linux Kernel Mailing List,
Linux FS Dev Mailing List, Linux F2FS Dev Mailing List,
Michael Halcrow, Theodore Ts'o
On Sat, Mar 26, 2016 at 10:53:52AM -0700, Linus Torvalds wrote:
> Good catch, Eric.
>
> While waiting for explanations, I've committed the change to move back
> to just the page index.
Thank you.
+Ted
This was originally introduced in EXT4 for AOSP last year.
At that time, Ted suggested that it'd good to support it in F2FS as well for
AOSP. (It is now easy to build AOSP with F2FS anyway.)
So, I copied most of libraries from EXT4 and modified F2FS to activate that.
After then, as Dave suggested, we needed to move the crypto libraries into
common fs/crypto, so that other filesystems can support that in common sense.
Please check the below threads about this history.
http://www.spinics.net/lists/linux-fsdevel/msg93424.html
In my sense currently, I can see that there is still no product shipped with
this by default.
It seems manufacturers have been continuing to run a bunch of stress and
functional tests. It's up to google's decision though.
Thanks,
>
> On Sat, Mar 26, 2016 at 6:47 AM, Eric Biggers <ebiggers3@gmail.com> wrote:
> >
> > Another question about the choice of IV. If the page index in CPU order is
> > (supposed to be) used as the IV, doesn't make the on-disk format of the
> > filesystem endianness-dependent? I thought that's a big no-no.
>
> It is indeed a bad design choice, but at the same time I think it's
> time to just admit that big-endian is largely dead, and people don't
> necessarily need to worry about it too much. It makes it impossible to
> move a disk image from x86 and ARM to Sparc or BE powerpc, but it's
> not like anybody is actually going to do that. And PowerPC is moving
> towards LE particularly in environments that have any kind of sharing
> going on.
>
> The code itself seems largely identical between ext4 and f2fs (which I
> assume is the reason for trying to move it to a shared subdirectory),
> and is fairly new. It was merged in both back in April of last year,
> so I can't tell if one or the other is supposedly the "official" one,
> or how much actual use the crypto extensions actually have yet. Adding
> Michael Halcrow to the Cc for comments.
>
> I do wonder if it would make sense to just _force_ the use of the
> little-endian format, and make that memcpy be a
>
> *(__le64 *)xts_tweak = cpu_to_le64(pgoff);
>
> instead. That would break any existing BE uses, but considering that
> this code is fairly new, those may simply not exist.
>
> I also wonder if the xts_tweak should perhaps have both the page
> offset _and_ the inode number in it. Both ext4 and f2fs specify that
> xts tweak size to be 16 bytes, and right now fill the last 8 bytes
> with zero. Would it make sense to just put the inode number in there?
> I didn't look at the actual key stuff - maybe the key is already
> per-inode and it doesn't make any sense to add the inode info _again_,
> but if the key is fs-wide, maybe it would be a good idea? With a mount
> option so that you can keep any legacy filesystem images..
>
> Linus
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [GIT PULL] f2fs updates for v4.6
2016-03-26 20:00 ` Jaegeuk Kim
@ 2016-03-26 20:04 ` Linus Torvalds
2016-03-26 20:26 ` Jaegeuk Kim
0 siblings, 1 reply; 17+ messages in thread
From: Linus Torvalds @ 2016-03-26 20:04 UTC (permalink / raw)
To: Jaegeuk Kim
Cc: Eric Biggers, Linux Kernel Mailing List,
Linux FS Dev Mailing List, Linux F2FS Dev Mailing List,
Michael Halcrow, Theodore Ts'o
On Sat, Mar 26, 2016 at 1:00 PM, Jaegeuk Kim <jaegeuk@kernel.org> wrote:
>
> After then, as Dave suggested, we needed to move the crypto libraries into
> common fs/crypto, so that other filesystems can support that in common sense.
>
> Please check the below threads about this history.
> http://www.spinics.net/lists/linux-fsdevel/msg93424.html
That's not the explanation we wanted.
The thing that needs explaining is the "index" change to
"inode->i_ino", which I undid.
How/why did that happen?
Linus
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [GIT PULL] f2fs updates for v4.6
2016-03-26 20:04 ` Linus Torvalds
@ 2016-03-26 20:26 ` Jaegeuk Kim
0 siblings, 0 replies; 17+ messages in thread
From: Jaegeuk Kim @ 2016-03-26 20:26 UTC (permalink / raw)
To: Linus Torvalds
Cc: Eric Biggers, Linux Kernel Mailing List,
Linux FS Dev Mailing List, Linux F2FS Dev Mailing List,
Michael Halcrow, Theodore Ts'o
On Sat, Mar 26, 2016 at 01:04:44PM -0700, Linus Torvalds wrote:
> On Sat, Mar 26, 2016 at 1:00 PM, Jaegeuk Kim <jaegeuk@kernel.org> wrote:
> >
> > After then, as Dave suggested, we needed to move the crypto libraries into
> > common fs/crypto, so that other filesystems can support that in common sense.
> >
> > Please check the below threads about this history.
> > http://www.spinics.net/lists/linux-fsdevel/msg93424.html
>
> That's not the explanation we wanted.
>
> The thing that needs explaining is the "index" change to
> "inode->i_ino", which I undid.
Oh, I made the original uplift patch a year ago and confused with the below
patch at that time.
I missed this, when writing new patches based on the old ones recently.
https://lkml.org/lkml/2015/5/11/1214
I made that patch to resolve the changed page index by fcollapse.
But, simply I noticed that encryption doesn't support fcollapse or finsert.
Thanks,
>
> How/why did that happen?
>
> Linus
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [GIT PULL] f2fs updates for v4.6
2016-03-26 17:53 ` Linus Torvalds
2016-03-26 20:00 ` Jaegeuk Kim
@ 2016-03-26 20:41 ` Theodore Ts'o
2016-03-26 20:48 ` Linus Torvalds
1 sibling, 1 reply; 17+ messages in thread
From: Theodore Ts'o @ 2016-03-26 20:41 UTC (permalink / raw)
To: Linus Torvalds
Cc: Eric Biggers, Jaegeuk Kim, Linux Kernel Mailing List,
Linux FS Dev Mailing List, Linux F2FS Dev Mailing List,
Michael Halcrow
On Sat, Mar 26, 2016 at 10:53:52AM -0700, Linus Torvalds wrote:
> On Sat, Mar 26, 2016 at 6:47 AM, Eric Biggers <ebiggers3@gmail.com> wrote:
> > Another question about the choice of IV. If the page index in CPU order is
> > (supposed to be) used as the IV, doesn't make the on-disk format of the
> > filesystem endianness-dependent? I thought that's a big no-no.
>
> It is indeed a bad design choice, but at the same time I think it's
> time to just admit that big-endian is largely dead, and people don't
> necessarily need to worry about it too much.
Yes, this is a bug. We should have used a CPU endianness-independent
IV. Mea culpa for not noticing this.
> I do wonder if it would make sense to just _force_ the use of the
> little-endian format, and make that memcpy be a
>
> *(__le64 *)xts_tweak = cpu_to_le64(pgoff);
>
> instead. That would break any existing BE uses, but considering that
> this code is fairly new, those may simply not exist.
Yes, that's probably the best way to go.
> The code itself seems largely identical between ext4 and f2fs (which I
> assume is the reason for trying to move it to a shared subdirectory),
> and is fairly new. It was merged in both back in April of last year,
> so I can't tell if one or the other is supposedly the "official" one,
> or how much actual use the crypto extensions actually have yet. Adding
> Michael Halcrow to the Cc for comments.
The ext4 code came first, but we've been working closely with the f2fs
folks to make sure they could reuse userspace and to eventually merge
everything into a shared subdirectory. The main reason why we didn't
was because we were in a rush to try to beat the Android 'M'
deadlines. Unfortunately, an ARM-specific bug caused us to have to
pull the feature from the Android Marshmellow release at the last
minute (xfstests hadn't been ported to the Android environment yet,
and so I could only do my testing on x86 and hope that translated to
ARM). That being said, the AOSP release for M has working userspace
support for the file system crypto feature, and you can make it work
with either ext4 or f2fs encryption.
The pre-release e2fsprogs 1.43 has support for the encryption feature,
and the e4crypt binary should work for f2fs as well --- but that only
got released in Debian unstable last week. (Single signon support via
integration for PAM is not yet done; there's enough in e4crypt for
testing purposes, but we've been more focused on userspace integration
for Android than for the generic Linux desktop.)
So while it's possible that there might be some super-aggressive early
adopters using Cyanogen or Debian unstable, it wouldn't be very many,
and it's almost certainly on little-endian and not on bigendian
architectures. So preserving compatibility for LE platforms is the
right way to go.
> I also wonder if the xts_tweak should perhaps have both the page
> offset _and_ the inode number in it. Both ext4 and f2fs specify that
> xts tweak size to be 16 bytes, and right now fill the last 8 bytes
> with zero. Would it make sense to just put the inode number in there?
> I didn't look at the actual key stuff - maybe the key is already
> per-inode and it doesn't make any sense to add the inode info _again_,
Yes, the key is per-file. The user's key is mixed with a per-inode
nonce to create a per-inode key.
BTW, as far as switching ext4 to use the shared code in fs/crypto ---
I'm hoping to get that done for the next merge window. There are a 2
or 3 patches to fix some recently discovered bugs that I'll need to
push into the fs/crypto code, but I'll take care of that for the next
development cycle.
- Ted
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [GIT PULL] f2fs updates for v4.6
2016-03-26 20:41 ` Theodore Ts'o
@ 2016-03-26 20:48 ` Linus Torvalds
2016-03-26 20:55 ` Theodore Ts'o
0 siblings, 1 reply; 17+ messages in thread
From: Linus Torvalds @ 2016-03-26 20:48 UTC (permalink / raw)
To: Theodore Ts'o, Linus Torvalds, Eric Biggers, Jaegeuk Kim,
Linux Kernel Mailing List, Linux FS Dev Mailing List,
Linux F2FS Dev Mailing List, Michael Halcrow
On Sat, Mar 26, 2016 at 1:41 PM, Theodore Ts'o <tytso@mit.edu> wrote:
>
>> I also wonder if the xts_tweak should perhaps have both the page
>> offset _and_ the inode number in it. Both ext4 and f2fs specify that
>> xts tweak size to be 16 bytes, and right now fill the last 8 bytes
>> with zero. Would it make sense to just put the inode number in there?
>> I didn't look at the actual key stuff - maybe the key is already
>> per-inode and it doesn't make any sense to add the inode info _again_,
>
> Yes, the key is per-file. The user's key is mixed with a per-inode
> nonce to create a per-inode key.
Ok, so the only thing that makes sense is really the page offset. Sounds fine.
> BTW, as far as switching ext4 to use the shared code in fs/crypto ---
> I'm hoping to get that done for the next merge window. There are a 2
> or 3 patches to fix some recently discovered bugs that I'll need to
> push into the fs/crypto code, but I'll take care of that for the next
> development cycle.
No worries. Considering this mistake (which happily seems to have an
innocent explanation for it) it would be good to have it verified that
the shared code does actually work for you, so that we don't end up in
the unhappy situation that the code got split up in order to be
shared, but some random detail choice then made it not actually work
for ext4 after all..
So even if I wouldn't want to pull any ext4 updates to use the new
shared location this merge windoe (I'm making ready to close the merge
window asap), it would be good to know that what we will have for 4.6
is going to work for you, and we don't end up with somethign that
diverges between f2fs and ext4 after all..
Linus
------------------------------------------------------------------------------
Transform Data into Opportunity.
Accelerate data analysis in your applications with
Intel Data Analytics Acceleration Library.
Click to learn more.
http://pubads.g.doubleclick.net/gampad/clk?id=278785351&iu=/4140
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [GIT PULL] f2fs updates for v4.6
2016-03-26 20:48 ` Linus Torvalds
@ 2016-03-26 20:55 ` Theodore Ts'o
0 siblings, 0 replies; 17+ messages in thread
From: Theodore Ts'o @ 2016-03-26 20:55 UTC (permalink / raw)
To: Linus Torvalds
Cc: Eric Biggers, Michael Halcrow, Linux Kernel Mailing List,
Linux F2FS Dev Mailing List, Linux FS Dev Mailing List,
Jaegeuk Kim
On Sat, Mar 26, 2016 at 01:48:23PM -0700, Linus Torvalds wrote:
> > BTW, as far as switching ext4 to use the shared code in fs/crypto ---
> > I'm hoping to get that done for the next merge window. There are a 2
> > or 3 patches to fix some recently discovered bugs that I'll need to
> > push into the fs/crypto code, but I'll take care of that for the next
> > development cycle.
>
> No worries. Considering this mistake (which happily seems to have an
> innocent explanation for it) it would be good to have it verified that
> the shared code does actually work for you, so that we don't end up in
> the unhappy situation that the code got split up in order to be
> shared, but some random detail choice then made it not actually work
> for ext4 after all..
Oh, for sure. One of the things I plan to do is to make sure that a
file system created using the *current* ext4 encryption code is
properly readable using the new fs/crypto code. I'll also run a full
regression test run using xfstests as well.
That's one of the reasons why I wasn't going to even try to get it
done for this merge window (even if you weren't going to be closing
the merge window tomorrow). I just didn't have the time to do a good
job, and it made sense to let the f2fs code go in first, and then
convert ext4 afterwards.
- Ted
------------------------------------------------------------------------------
Transform Data into Opportunity.
Accelerate data analysis in your applications with
Intel Data Analytics Acceleration Library.
Click to learn more.
http://pubads.g.doubleclick.net/gampad/clk?id=278785351&iu=/4140
^ permalink raw reply [flat|nested] 17+ messages in thread
end of thread, other threads:[~2016-03-26 20:55 UTC | newest]
Thread overview: 17+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-03-20 22:58 [GIT PULL] f2fs updates for v4.6 Jaegeuk Kim
2016-03-21 18:09 ` Linus Torvalds
2016-03-21 18:45 ` Jaegeuk Kim
2016-03-26 6:10 ` Eric Biggers
2016-03-26 8:56 ` Jaegeuk Kim
2016-03-26 13:47 ` Eric Biggers
2016-03-26 17:53 ` Linus Torvalds
2016-03-26 20:00 ` Jaegeuk Kim
2016-03-26 20:04 ` Linus Torvalds
2016-03-26 20:26 ` Jaegeuk Kim
2016-03-26 20:41 ` Theodore Ts'o
2016-03-26 20:48 ` Linus Torvalds
2016-03-26 20:55 ` Theodore Ts'o
-- strict thread matches above, loose matches on Subject: below --
2016-03-18 0:58 Jaegeuk Kim
2016-03-18 2:32 ` Linus Torvalds
2016-03-18 2:35 ` Linus Torvalds
2016-03-18 5:00 ` Jaegeuk Kim
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).