<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/fs/exfat, branch linux-5.16.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-5.16.y</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-5.16.y'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2022-03-08T18:14:04Z</updated>
<entry>
<title>exfat: fix i_blocks for files truncated over 4 GiB</title>
<updated>2022-03-08T18:14:04Z</updated>
<author>
<name>Christophe Vu-Brugier</name>
</author>
<published>2021-11-22T13:02:37Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=5394d6a69afcd37c0216d697d8a93e55f1471896'/>
<id>urn:sha1:5394d6a69afcd37c0216d697d8a93e55f1471896</id>
<content type='text'>
[ Upstream commit 92fba084b79e6bc7b12fc118209f1922c1a2df56 ]

In exfat_truncate(), the computation of inode-&gt;i_blocks is wrong if
the file is larger than 4 GiB because a 32-bit variable is used as a
mask. This is fixed and simplified by using round_up().

Also fix the same buggy computation in exfat_read_root() and another
(correct) one in exfat_fill_inode(). The latter was fixed another way
last month but can be simplified by using round_up() as well. See:

  commit 0c336d6e33f4 ("exfat: fix incorrect loading of i_blocks for
                        large files")

Fixes: 98d917047e8b ("exfat: add file operations")
Cc: stable@vger.kernel.org # v5.7+
Suggested-by: Matthew Wilcox &lt;willy@infradead.org&gt;
Reviewed-by: Sungjong Seo &lt;sj1557.seo@samsung.com&gt;
Signed-off-by: Christophe Vu-Brugier &lt;christophe.vu-brugier@seagate.com&gt;
Signed-off-by: Namjae Jeon &lt;linkinjeon@kernel.org&gt;
Signed-off-by: Sasha Levin &lt;sashal@kernel.org&gt;
</content>
</entry>
<entry>
<title>exfat: reuse exfat_inode_info variable instead of calling EXFAT_I()</title>
<updated>2022-03-08T18:14:04Z</updated>
<author>
<name>Christophe Vu-Brugier</name>
</author>
<published>2021-11-02T21:23:58Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=aae9a5768b690273ab3a008cafdc29b53aa51b24'/>
<id>urn:sha1:aae9a5768b690273ab3a008cafdc29b53aa51b24</id>
<content type='text'>
[ Upstream commit 7dee6f57d7f22a89dd214518c778aec448270d4c ]

Also add a local "struct exfat_inode_info *ei" variable to
exfat_truncate() to simplify the code.

Signed-off-by: Christophe Vu-Brugier &lt;christophe.vu-brugier@seagate.com&gt;
Signed-off-by: Namjae Jeon &lt;linkinjeon@kernel.org&gt;
Signed-off-by: Sasha Levin &lt;sashal@kernel.org&gt;
</content>
</entry>
<entry>
<title>exfat: fix incorrect loading of i_blocks for large files</title>
<updated>2021-10-31T22:49:21Z</updated>
<author>
<name>Sungjong Seo</name>
</author>
<published>2021-10-19T06:14:21Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=0c336d6e33f4bedc443404c89f43c91c8bd9ee11'/>
<id>urn:sha1:0c336d6e33f4bedc443404c89f43c91c8bd9ee11</id>
<content type='text'>
When calculating i_blocks, there was a mistake that was masked with a
32-bit variable. So i_blocks for files larger than 4 GiB had incorrect
values. Mask with a 64-bit variable instead of 32-bit one.

Fixes: 5f2aa075070c ("exfat: add inode operations")
Cc: stable@vger.kernel.org # v5.7+
Reported-by: Ganapathi Kamath &lt;hgkamath@hotmail.com&gt;
Signed-off-by: Sungjong Seo &lt;sj1557.seo@samsung.com&gt;
Signed-off-by: Namjae Jeon &lt;linkinjeon@kernel.org&gt;
</content>
</entry>
<entry>
<title>Merge tag 'exfat-for-5.14-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/linkinjeon/exfat</title>
<updated>2021-07-06T18:06:04Z</updated>
<author>
<name>Linus Torvalds</name>
</author>
<published>2021-07-06T18:06:04Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=7a5e9a17b2d8905e368ddfb33ddd40ef57f2d7cc'/>
<id>urn:sha1:7a5e9a17b2d8905e368ddfb33ddd40ef57f2d7cc</id>
<content type='text'>
Pull exfat updates from Namjae Jeon:

 - Improved compatibility issue with exfat from some camera vendors.

 - Do not need to release root inode on error path.

* tag 'exfat-for-5.14-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/linkinjeon/exfat:
  exfat: handle wrong stream entry size in exfat_readdir()
  exfat: avoid incorrectly releasing for root inode
</content>
</entry>
<entry>
<title>exfat: handle wrong stream entry size in exfat_readdir()</title>
<updated>2021-07-04T00:33:00Z</updated>
<author>
<name>Namjae Jeon</name>
</author>
<published>2021-06-11T00:40:24Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=1e5654de0f51890f88abd409ebf4867782431e81'/>
<id>urn:sha1:1e5654de0f51890f88abd409ebf4867782431e81</id>
<content type='text'>
The compatibility issue between linux exfat and exfat of some camera
company was reported from Florian. In their exfat, if the number of files
exceeds any limit, the DataLength in stream entry of the directory is
no longer updated. So some files created from camera does not show in
linux exfat. because linux exfat doesn't allow that cpos becomes larger
than DataLength of stream entry. This patch check DataLength in stream
entry only if the type is ALLOC_NO_FAT_CHAIN and add the check ensure
that dentry offset does not exceed max dentries size(256 MB) to avoid
the circular FAT chain issue.

Fixes: ca06197382bd ("exfat: add directory operations")
Cc: stable@vger.kernel.org # v5.9
Reported-by: Florian Cramer &lt;flrncrmr@gmail.com&gt;
Reviewed-by: Sungjong Seo &lt;sj1557.seo@samsung.com&gt;
Tested-by: Chris Down &lt;chris@chrisdown.name&gt;
Signed-off-by: Namjae Jeon &lt;namjae.jeon@samsung.com&gt;
</content>
</entry>
<entry>
<title>mm: require -&gt;set_page_dirty to be explicitly wired up</title>
<updated>2021-06-29T17:53:48Z</updated>
<author>
<name>Christoph Hellwig</name>
</author>
<published>2021-06-29T02:36:12Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=0af573780b0b13fceb7fabd49dc1b073cee9a507'/>
<id>urn:sha1:0af573780b0b13fceb7fabd49dc1b073cee9a507</id>
<content type='text'>
Remove the CONFIG_BLOCK default to __set_page_dirty_buffers and just wire
that method up for the missing instances.

[hch@lst.de: ecryptfs: add a -&gt;set_page_dirty cludge]
  Link: https://lkml.kernel.org/r/20210624125250.536369-1-hch@lst.de

Link: https://lkml.kernel.org/r/20210614061512.3966143-4-hch@lst.de
Signed-off-by: Christoph Hellwig &lt;hch@lst.de&gt;
Reviewed-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
Reviewed-by: Jan Kara &lt;jack@suse.cz&gt;
Cc: Al Viro &lt;viro@zeniv.linux.org.uk&gt;
Cc: Matthew Wilcox (Oracle) &lt;willy@infradead.org&gt;
Cc: Tyler Hicks &lt;code@tyhicks.com&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
</entry>
<entry>
<title>exfat: avoid incorrectly releasing for root inode</title>
<updated>2021-06-28T12:49:47Z</updated>
<author>
<name>Chen Li</name>
</author>
<published>2021-06-09T03:48:55Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=839a534f1e853f1aec100d06040c0037b89c2dc3'/>
<id>urn:sha1:839a534f1e853f1aec100d06040c0037b89c2dc3</id>
<content type='text'>
In d_make_root, when we fail to allocate dentry for root inode,
we will iput root inode and returned value is NULL in this function.

So we do not need to release this inode again at d_make_root's caller.

Signed-off-by: Chen Li &lt;chenli@uniontech.com&gt;
Signed-off-by: Namjae Jeon &lt;namjae.jeon@samsung.com&gt;
</content>
</entry>
<entry>
<title>exfat: speed up iterate/lookup by fixing start point of traversing cluster chain</title>
<updated>2021-04-27T11:45:07Z</updated>
<author>
<name>Hyeongseok Kim</name>
</author>
<published>2021-03-22T03:53:36Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=c6e2f52e3051e8d898d38840104638ca8bbcdec2'/>
<id>urn:sha1:c6e2f52e3051e8d898d38840104638ca8bbcdec2</id>
<content type='text'>
When directory iterate and lookup is called, there's a buggy rewinding
of start point for traversing cluster chain to the parent directory
entry's first cluster. This caused repeated cluster chain traversing
from the first entry of the parent directory that would show worse
performance if huge amounts of files exist under the parent directory.
Fix not to rewind, make continue from currently referenced cluster and
dir entry.

Tested with 50,000 files under single directory / 256GB sdcard,
with command "time ls -l &gt; /dev/null",
Before :     0m08.69s real     0m00.27s user     0m05.91s system
After  :     0m07.01s real     0m00.25s user     0m04.34s system

Signed-off-by: Hyeongseok Kim &lt;hyeongseok@gmail.com&gt;
Reviewed-by: Sungjong Seo &lt;sj1557.seo@samsung.com&gt;
Signed-off-by: Namjae Jeon &lt;namjae.jeon@samsung.com&gt;
</content>
</entry>
<entry>
<title>exfat: improve write performance when dirsync enabled</title>
<updated>2021-04-27T11:45:06Z</updated>
<author>
<name>Hyeongseok Kim</name>
</author>
<published>2021-03-15T04:12:55Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=23befe490ba885bdf757d40b2489134315fef690'/>
<id>urn:sha1:23befe490ba885bdf757d40b2489134315fef690</id>
<content type='text'>
Degradation of write speed caused by frequent disk access for cluster
bitmap update on every cluster allocation could be improved by
selective syncing bitmap buffer. Change to flush bitmap buffer only
for the directory related operations.

Signed-off-by: Hyeongseok Kim &lt;hyeongseok@gmail.com&gt;
Acked-by: Sungjong Seo &lt;sj1557.seo@samsung.com&gt;
Signed-off-by: Namjae Jeon &lt;namjae.jeon@samsung.com&gt;
</content>
</entry>
<entry>
<title>exfat: add support ioctl and FITRIM function</title>
<updated>2021-04-27T11:45:06Z</updated>
<author>
<name>Hyeongseok Kim</name>
</author>
<published>2021-03-04T00:20:35Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=654762df2ec7d61b05acc788afbffaba52d658fe'/>
<id>urn:sha1:654762df2ec7d61b05acc788afbffaba52d658fe</id>
<content type='text'>
Add FITRIM ioctl to enable discarding unused blocks while mounted.
As current exFAT doesn't have generic ioctl handler, add empty ioctl
function first, and add FITRIM handler.

Signed-off-by: Hyeongseok Kim &lt;hyeongseok@gmail.com&gt;
Reviewed-by: Chaitanya Kulkarni &lt;chaitanya.kulkarni@wdc.com&gt;
Acked-by: Sungjong Seo &lt;sj1557.seo@samsung.com&gt;
Signed-off-by: Namjae Jeon &lt;namjae.jeon@samsung.com&gt;
</content>
</entry>
</feed>
