<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux.git/fs/logfs, branch v3.6</title>
<subtitle>Linux kernel source tree</subtitle>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/'/>
<entry>
<title>Merge tag 'for-linus' of git://github.com/prasad-joshi/logfs_upstream</title>
<updated>2012-08-26T17:14:11+00:00</updated>
<author>
<name>Linus Torvalds</name>
<email>torvalds@linux-foundation.org</email>
</author>
<published>2012-08-26T17:14:11+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=89a897fbd8c181bfbf814b84fcdce1cd80a3a388'/>
<id>89a897fbd8c181bfbf814b84fcdce1cd80a3a388</id>
<content type='text'>
Pull LogFS bugfixes from Prasad Joshi:

 - "logfs: query block device for number of pages to send with bio"

	This BUG was found when LogFS was used on KVM. The patch fixes
	the problem by asking for underlaying block device the number
	of pages to send with each BIO.

 - "logfs: maintain the ordering of meta-inode destruction"

	LogFS maintains file system meta-data in special inodes. These
	inodes are releated to each other, therefore they must be
	destroyed in a proper order.

 - "logfs: initialize the number of iovecs in bio"

	LogFS used to panic when it was created on an encrypted LVM
	volume. The patch fixes the problem by properly initializing
	the BIO.

Plus a couple more:
 - logfs: create a pagecache page if it is not present
 - logfs: destroy the reserved inodes while unmounting

* tag 'for-linus' of git://github.com/prasad-joshi/logfs_upstream:
  logfs: query block device for number of pages to send with bio
  logfs: maintain the ordering of meta-inode destruction
  logfs: create a pagecache page if it is not present
  logfs: initialize the number of iovecs in bio
  logfs: destroy the reserved inodes while unmounting
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Pull LogFS bugfixes from Prasad Joshi:

 - "logfs: query block device for number of pages to send with bio"

	This BUG was found when LogFS was used on KVM. The patch fixes
	the problem by asking for underlaying block device the number
	of pages to send with each BIO.

 - "logfs: maintain the ordering of meta-inode destruction"

	LogFS maintains file system meta-data in special inodes. These
	inodes are releated to each other, therefore they must be
	destroyed in a proper order.

 - "logfs: initialize the number of iovecs in bio"

	LogFS used to panic when it was created on an encrypted LVM
	volume. The patch fixes the problem by properly initializing
	the BIO.

Plus a couple more:
 - logfs: create a pagecache page if it is not present
 - logfs: destroy the reserved inodes while unmounting

* tag 'for-linus' of git://github.com/prasad-joshi/logfs_upstream:
  logfs: query block device for number of pages to send with bio
  logfs: maintain the ordering of meta-inode destruction
  logfs: create a pagecache page if it is not present
  logfs: initialize the number of iovecs in bio
  logfs: destroy the reserved inodes while unmounting
</pre>
</div>
</content>
</entry>
<entry>
<title>logfs: query block device for number of pages to send with bio</title>
<updated>2012-07-23T05:02:11+00:00</updated>
<author>
<name>Prasad Joshi</name>
<email>prasadjoshi.linux@gmail.com</email>
</author>
<published>2012-07-23T05:02:11+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=9f0bbd8ca7905fcc0602c038013b095322fec939'/>
<id>9f0bbd8ca7905fcc0602c038013b095322fec939</id>
<content type='text'>
The block device driver puts a limit on maximum number of pages that
can be sent with the bio. Not all block devices can handle
BIO_MAX_PAGES number of pages in bio. Specifically the virtio-blk
diriver limits it to 126. When the LogFS file system was excersized in
KVM, the following bug from do_virtblk_request() was observed

static void do_virtblk_request(struct request_queue *q)
{
	....
	....
	while ((req = blk_peek_request(q)) != NULL) {
		BUG_ON(req-&gt;nr_phys_segments + 2 &gt; vblk-&gt;sg_elems);
		....
		....
	}
	....
}

The patch fixes the problem by querring the maximum number of pages in
bio allowed from block device driver and then using those many pages
during submit_bio.

Signed-off-by: Prasad Joshi &lt;prasadjoshi.linux@gmail.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The block device driver puts a limit on maximum number of pages that
can be sent with the bio. Not all block devices can handle
BIO_MAX_PAGES number of pages in bio. Specifically the virtio-blk
diriver limits it to 126. When the LogFS file system was excersized in
KVM, the following bug from do_virtblk_request() was observed

static void do_virtblk_request(struct request_queue *q)
{
	....
	....
	while ((req = blk_peek_request(q)) != NULL) {
		BUG_ON(req-&gt;nr_phys_segments + 2 &gt; vblk-&gt;sg_elems);
		....
		....
	}
	....
}

The patch fixes the problem by querring the maximum number of pages in
bio allowed from block device driver and then using those many pages
during submit_bio.

Signed-off-by: Prasad Joshi &lt;prasadjoshi.linux@gmail.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>logfs: maintain the ordering of meta-inode destruction</title>
<updated>2012-07-23T04:05:52+00:00</updated>
<author>
<name>Prasad Joshi</name>
<email>prasadjoshi.linux@gmail.com</email>
</author>
<published>2012-07-23T04:05:52+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=41b93bc1ee7e7276db698dd66afa7b740cda517a'/>
<id>41b93bc1ee7e7276db698dd66afa7b740cda517a</id>
<content type='text'>
LogFS does not use a specialized area to maintain the inodes. The
inodes information is kept in a specialized file called inode file.
Similarly, the segment information is kept in a segment file. Since
the segment file also has an inode which is kept in the inode file,
the inode for segment file must be evicted before the inode for inode
file. The change fixes the following BUG during unmount

Pid: 2057, comm: umount Not tainted 3.5.0-rc6+ #25 Bochs Bochs
RIP: 0010:[&lt;ffffffffa005c5f2&gt;]  [&lt;ffffffffa005c5f2&gt;] move_page_to_btree+0x32/0x1f0 [logfs]
Process umount (pid: 2057, threadinfo ...)
Call Trace:
[&lt;ffffffff8112adca&gt;] ? find_get_pages+0x2a/0x180
[&lt;ffffffffa00549f5&gt;] logfs_invalidatepage+0x85/0x90 [logfs]
[&lt;ffffffff81136c51&gt;] truncate_inode_page+0xb1/0xd0
[&lt;ffffffff81136dcf&gt;] truncate_inode_pages_range+0x15f/0x490
[&lt;ffffffff81558549&gt;] ? printk+0x78/0x7a
[&lt;ffffffff81137185&gt;] truncate_inode_pages+0x15/0x20
[&lt;ffffffffa005b7fc&gt;] logfs_evict_inode+0x6c/0x190 [logfs]
[&lt;ffffffff8155c75b&gt;] ? _raw_spin_unlock+0x2b/0x40
[&lt;ffffffff8119e3d7&gt;] evict+0xa7/0x1b0
[&lt;ffffffff8119ea6e&gt;] dispose_list+0x3e/0x60
[&lt;ffffffff8119f1c4&gt;] evict_inodes+0xf4/0x110
[&lt;ffffffff81185b53&gt;] generic_shutdown_super+0x53/0xf0
[&lt;ffffffffa005d8f2&gt;] logfs_kill_sb+0x52/0xf0 [logfs]
[&lt;ffffffff81185ec5&gt;] deactivate_locked_super+0x45/0x80
[&lt;ffffffff81186a4a&gt;] deactivate_super+0x4a/0x70
[&lt;ffffffff811a228e&gt;] mntput_no_expire+0xde/0x140
[&lt;ffffffff811a30ff&gt;] sys_umount+0x6f/0x3a0
[&lt;ffffffff8155d8e9&gt;] system_call_fastpath+0x16/0x1b
---[ end trace 45f7752082cefafd ]---

Signed-off-by: Prasad Joshi &lt;prasadjoshi.linux@gmail.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
LogFS does not use a specialized area to maintain the inodes. The
inodes information is kept in a specialized file called inode file.
Similarly, the segment information is kept in a segment file. Since
the segment file also has an inode which is kept in the inode file,
the inode for segment file must be evicted before the inode for inode
file. The change fixes the following BUG during unmount

Pid: 2057, comm: umount Not tainted 3.5.0-rc6+ #25 Bochs Bochs
RIP: 0010:[&lt;ffffffffa005c5f2&gt;]  [&lt;ffffffffa005c5f2&gt;] move_page_to_btree+0x32/0x1f0 [logfs]
Process umount (pid: 2057, threadinfo ...)
Call Trace:
[&lt;ffffffff8112adca&gt;] ? find_get_pages+0x2a/0x180
[&lt;ffffffffa00549f5&gt;] logfs_invalidatepage+0x85/0x90 [logfs]
[&lt;ffffffff81136c51&gt;] truncate_inode_page+0xb1/0xd0
[&lt;ffffffff81136dcf&gt;] truncate_inode_pages_range+0x15f/0x490
[&lt;ffffffff81558549&gt;] ? printk+0x78/0x7a
[&lt;ffffffff81137185&gt;] truncate_inode_pages+0x15/0x20
[&lt;ffffffffa005b7fc&gt;] logfs_evict_inode+0x6c/0x190 [logfs]
[&lt;ffffffff8155c75b&gt;] ? _raw_spin_unlock+0x2b/0x40
[&lt;ffffffff8119e3d7&gt;] evict+0xa7/0x1b0
[&lt;ffffffff8119ea6e&gt;] dispose_list+0x3e/0x60
[&lt;ffffffff8119f1c4&gt;] evict_inodes+0xf4/0x110
[&lt;ffffffff81185b53&gt;] generic_shutdown_super+0x53/0xf0
[&lt;ffffffffa005d8f2&gt;] logfs_kill_sb+0x52/0xf0 [logfs]
[&lt;ffffffff81185ec5&gt;] deactivate_locked_super+0x45/0x80
[&lt;ffffffff81186a4a&gt;] deactivate_super+0x4a/0x70
[&lt;ffffffff811a228e&gt;] mntput_no_expire+0xde/0x140
[&lt;ffffffff811a30ff&gt;] sys_umount+0x6f/0x3a0
[&lt;ffffffff8155d8e9&gt;] system_call_fastpath+0x16/0x1b
---[ end trace 45f7752082cefafd ]---

Signed-off-by: Prasad Joshi &lt;prasadjoshi.linux@gmail.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>logfs: create a pagecache page if it is not present</title>
<updated>2012-07-23T03:48:14+00:00</updated>
<author>
<name>Prasad Joshi</name>
<email>prasadjoshi.linux@gmail.com</email>
</author>
<published>2012-07-23T03:48:14+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=ddb24bbac3681b87ae0638aacb702d9273e3c025'/>
<id>ddb24bbac3681b87ae0638aacb702d9273e3c025</id>
<content type='text'>
While writing the partial journal entries we assumed that the page
associated with the journal would always in locatable. This incorrect
assumption resulted in the following BUG

kernel BUG at /home/benixon/WD_SMR/kernels/linux-3.3.7-logfs/fs/logfs/journal.c:569!
EIP is at logfs_write_area+0xb6/0x109 [logfs]
EAX: 00000000 EBX: 00000000 ECX: ef6efea4 EDX: 00000000
ESI: 001b9000 EDI: f009e000 EBP: c3c13f14 ESP: c3c13ef0
DS: 007b ES: 007b FS: 00d8 GS: 00e0 SS: 0068
Process sync (pid: 1799, ti=c3c12000 task=f07825b0 task.ti=c3c12000)
Stack:
01001000 c3c13f26 781b9000 00000000 f009e000 f7286000 f1f83400 f8445071
f1f83400 c3c13f30 f8445ae9 c3c13f20 0000100a 000ee000 f009e000 00000001
c3c13f5c f8445d17 c05eb0ee 00000000 f1f83400 ef718000 f009e25c ea9c3d80
Call Trace:
[&lt;f8445071&gt;] ? account_shadow+0x16d/0x16d [logfs]
[&lt;f8445ae9&gt;] logfs_write_je+0x2a/0x44 [logfs]
[&lt;f8445d17&gt;] logfs_write_anchor+0x114/0x228 [logfs]
[&lt;c05eb0ee&gt;] ? empty+0x5/0x5
[&lt;f8444522&gt;] logfs_sync_fs+0x1e/0x31 [logfs]
[&lt;c051be66&gt;] __sync_filesystem+0x5d/0x6f
[&lt;c051be8d&gt;] sync_one_sb+0x15/0x17
[&lt;c04ff8b0&gt;] iterate_supers+0x59/0x9a
[&lt;c051be78&gt;] ? __sync_filesystem+0x6f/0x6f
[&lt;c051befc&gt;] sys_sync+0x29/0x4f
[&lt;c084285f&gt;] sysenter_do_call+0x12/0x28
EIP: [&lt;f8445127&gt;] logfs_write_area+0xb6/0x109 [logfs] SS:ESP 0068:c3c13ef0
---[ end trace ef6e9ef52601a945 ]---

The fix is to create the pagecache page if it is not locatable.

Reported-and-tested-by: Benixon Dhas &lt;Benixon.Dhas@wdc.com&gt;
Signed-off-by: Prasad Joshi &lt;prasadjoshi.linux@gmail.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
While writing the partial journal entries we assumed that the page
associated with the journal would always in locatable. This incorrect
assumption resulted in the following BUG

kernel BUG at /home/benixon/WD_SMR/kernels/linux-3.3.7-logfs/fs/logfs/journal.c:569!
EIP is at logfs_write_area+0xb6/0x109 [logfs]
EAX: 00000000 EBX: 00000000 ECX: ef6efea4 EDX: 00000000
ESI: 001b9000 EDI: f009e000 EBP: c3c13f14 ESP: c3c13ef0
DS: 007b ES: 007b FS: 00d8 GS: 00e0 SS: 0068
Process sync (pid: 1799, ti=c3c12000 task=f07825b0 task.ti=c3c12000)
Stack:
01001000 c3c13f26 781b9000 00000000 f009e000 f7286000 f1f83400 f8445071
f1f83400 c3c13f30 f8445ae9 c3c13f20 0000100a 000ee000 f009e000 00000001
c3c13f5c f8445d17 c05eb0ee 00000000 f1f83400 ef718000 f009e25c ea9c3d80
Call Trace:
[&lt;f8445071&gt;] ? account_shadow+0x16d/0x16d [logfs]
[&lt;f8445ae9&gt;] logfs_write_je+0x2a/0x44 [logfs]
[&lt;f8445d17&gt;] logfs_write_anchor+0x114/0x228 [logfs]
[&lt;c05eb0ee&gt;] ? empty+0x5/0x5
[&lt;f8444522&gt;] logfs_sync_fs+0x1e/0x31 [logfs]
[&lt;c051be66&gt;] __sync_filesystem+0x5d/0x6f
[&lt;c051be8d&gt;] sync_one_sb+0x15/0x17
[&lt;c04ff8b0&gt;] iterate_supers+0x59/0x9a
[&lt;c051be78&gt;] ? __sync_filesystem+0x6f/0x6f
[&lt;c051befc&gt;] sys_sync+0x29/0x4f
[&lt;c084285f&gt;] sysenter_do_call+0x12/0x28
EIP: [&lt;f8445127&gt;] logfs_write_area+0xb6/0x109 [logfs] SS:ESP 0068:c3c13ef0
---[ end trace ef6e9ef52601a945 ]---

The fix is to create the pagecache page if it is not locatable.

Reported-and-tested-by: Benixon Dhas &lt;Benixon.Dhas@wdc.com&gt;
Signed-off-by: Prasad Joshi &lt;prasadjoshi.linux@gmail.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>VFS: Pass mount flags to sget()</title>
<updated>2012-07-14T12:38:34+00:00</updated>
<author>
<name>David Howells</name>
<email>dhowells@redhat.com</email>
</author>
<published>2012-06-25T11:55:37+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=9249e17fe094d853d1ef7475dd559a2cc7e23d42'/>
<id>9249e17fe094d853d1ef7475dd559a2cc7e23d42</id>
<content type='text'>
Pass mount flags to sget() so that it can use them in initialising a new
superblock before the set function is called.  They could also be passed to the
compare function.

Signed-off-by: David Howells &lt;dhowells@redhat.com&gt;
Signed-off-by: Al Viro &lt;viro@zeniv.linux.org.uk&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Pass mount flags to sget() so that it can use them in initialising a new
superblock before the set function is called.  They could also be passed to the
compare function.

Signed-off-by: David Howells &lt;dhowells@redhat.com&gt;
Signed-off-by: Al Viro &lt;viro@zeniv.linux.org.uk&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>don't pass nameidata to -&gt;create()</title>
<updated>2012-07-14T12:34:47+00:00</updated>
<author>
<name>Al Viro</name>
<email>viro@zeniv.linux.org.uk</email>
</author>
<published>2012-06-10T22:05:36+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=ebfc3b49a7ac25920cb5be5445f602e51d2ea559'/>
<id>ebfc3b49a7ac25920cb5be5445f602e51d2ea559</id>
<content type='text'>
boolean "does it have to be exclusive?" flag is passed instead;
Local filesystem should just ignore it - the object is guaranteed
not to be there yet.

Signed-off-by: Al Viro &lt;viro@zeniv.linux.org.uk&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
boolean "does it have to be exclusive?" flag is passed instead;
Local filesystem should just ignore it - the object is guaranteed
not to be there yet.

Signed-off-by: Al Viro &lt;viro@zeniv.linux.org.uk&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>stop passing nameidata to -&gt;lookup()</title>
<updated>2012-07-14T12:34:32+00:00</updated>
<author>
<name>Al Viro</name>
<email>viro@zeniv.linux.org.uk</email>
</author>
<published>2012-06-10T21:13:09+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=00cd8dd3bf95f2cc8435b4cac01d9995635c6d0b'/>
<id>00cd8dd3bf95f2cc8435b4cac01d9995635c6d0b</id>
<content type='text'>
Just the flags; only NFS cares even about that, but there are
legitimate uses for such argument.  And getting rid of that
completely would require splitting -&gt;lookup() into a couple
of methods (at least), so let's leave that alone for now...

Signed-off-by: Al Viro &lt;viro@zeniv.linux.org.uk&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Just the flags; only NFS cares even about that, but there are
legitimate uses for such argument.  And getting rid of that
completely would require splitting -&gt;lookup() into a couple
of methods (at least), so let's leave that alone for now...

Signed-off-by: Al Viro &lt;viro@zeniv.linux.org.uk&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>vfs: Rename end_writeback() to clear_inode()</title>
<updated>2012-05-06T05:43:41+00:00</updated>
<author>
<name>Jan Kara</name>
<email>jack@suse.cz</email>
</author>
<published>2012-05-03T12:48:02+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=dbd5768f87ff6fb0a4fe09c4d7b6c4a24de99430'/>
<id>dbd5768f87ff6fb0a4fe09c4d7b6c4a24de99430</id>
<content type='text'>
After we moved inode_sync_wait() from end_writeback() it doesn't make sense
to call the function end_writeback() anymore. Rename it to clear_inode()
which well says what the function really does - set I_CLEAR flag.

Signed-off-by: Jan Kara &lt;jack@suse.cz&gt;
Signed-off-by: Fengguang Wu &lt;fengguang.wu@intel.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
After we moved inode_sync_wait() from end_writeback() it doesn't make sense
to call the function end_writeback() anymore. Rename it to clear_inode()
which well says what the function really does - set I_CLEAR flag.

Signed-off-by: Jan Kara &lt;jack@suse.cz&gt;
Signed-off-by: Fengguang Wu &lt;fengguang.wu@intel.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>logfs: initialize the number of iovecs in bio</title>
<updated>2012-04-02T12:34:00+00:00</updated>
<author>
<name>Prasad Joshi</name>
<email>prasadjoshi.linux@gmail.com</email>
</author>
<published>2012-04-02T03:53:04+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=cd8bfa9c8a13cf3facc5731da17e10188b3795d1'/>
<id>cd8bfa9c8a13cf3facc5731da17e10188b3795d1</id>
<content type='text'>
This fixes the following crash when a LogFS file system, created on a
encrypted LVM volume, was mounted

[  526.548034] BUG: unable to handle kernel NULL pointer dereference at
[  526.550106] IP: [&lt;ffffffff8131ecab&gt;] memcpy+0xb/0x120
[  526.551008] PGD bd60067 PUD 1778d067 PMD 0
[  526.551783] Oops: 0000 [#1] SMP

&lt;d&gt;Pid: 2043, comm: mount
&lt;d&gt;RIP: 0010:[&lt;ffffffff8131ecab&gt;]  [&lt;ffffffff8131ecab&gt;] memcpy+0xb/0x120
Call Trace:
	kcryptd_io_read+0xdb/0x100
	crypt_map+0xfd/0x190
	__map_bio+0x48/0x150
	__split_and_process_bio+0x51b/0x630
	dm_request+0x138/0x230
	generic_make_request+0xca/0x100
	submit_bio+0x87/0x110
	sync_request+0xdd/0x120 [logfs]
	bdev_readpage+0x2e/0x70 [logfs]
	do_read_cache_page+0x82/0x180
	logfs_mount+0x2ad/0x770 [logfs]
	mount_fs+0x47/0x1c0
	vfs_kern_mount+0x72/0x110
	do_kern_mount+0x54/0x110
	do_mount+0x520/0x7f0
	sys_mount+0x90/0xe0

Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=42292
Reported-by: Witold Baryluk &lt;baryluk@smp.if.uj.edu.pl&gt;
Signed-off-by: Prasad Joshi &lt;prasadjoshi.linux@gmail.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This fixes the following crash when a LogFS file system, created on a
encrypted LVM volume, was mounted

[  526.548034] BUG: unable to handle kernel NULL pointer dereference at
[  526.550106] IP: [&lt;ffffffff8131ecab&gt;] memcpy+0xb/0x120
[  526.551008] PGD bd60067 PUD 1778d067 PMD 0
[  526.551783] Oops: 0000 [#1] SMP

&lt;d&gt;Pid: 2043, comm: mount
&lt;d&gt;RIP: 0010:[&lt;ffffffff8131ecab&gt;]  [&lt;ffffffff8131ecab&gt;] memcpy+0xb/0x120
Call Trace:
	kcryptd_io_read+0xdb/0x100
	crypt_map+0xfd/0x190
	__map_bio+0x48/0x150
	__split_and_process_bio+0x51b/0x630
	dm_request+0x138/0x230
	generic_make_request+0xca/0x100
	submit_bio+0x87/0x110
	sync_request+0xdd/0x120 [logfs]
	bdev_readpage+0x2e/0x70 [logfs]
	do_read_cache_page+0x82/0x180
	logfs_mount+0x2ad/0x770 [logfs]
	mount_fs+0x47/0x1c0
	vfs_kern_mount+0x72/0x110
	do_kern_mount+0x54/0x110
	do_mount+0x520/0x7f0
	sys_mount+0x90/0xe0

Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=42292
Reported-by: Witold Baryluk &lt;baryluk@smp.if.uj.edu.pl&gt;
Signed-off-by: Prasad Joshi &lt;prasadjoshi.linux@gmail.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>logfs: destroy the reserved inodes while unmounting</title>
<updated>2012-04-02T03:50:33+00:00</updated>
<author>
<name>Prasad Joshi</name>
<email>prasadjoshi.linux@gmail.com</email>
</author>
<published>2012-03-09T00:57:12+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=d2dcd9083f101584e029cbd4f0e1a4e573170d43'/>
<id>d2dcd9083f101584e029cbd4f0e1a4e573170d43</id>
<content type='text'>
We were assuming that the evict_inode() would never be called on
reserved inodes. However, (after the commit 8e22c1a4e logfs: get rid
of magical inodes) while unmounting the file system, in put_super, we
call iput() on all of the reserved inodes.

The following simple test used to cause a kernel panic on LogFS:

1. Mount a LogFS file system on /mnt

2. Create a file
   $ touch /mnt/a

3. Try to unmount the FS
   $ umount /mnt

The simple fix would be to drop the assumption and properly destroy
the reserved inodes.

Signed-off-by: Prasad Joshi &lt;prasadjoshi.linux@gmail.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
We were assuming that the evict_inode() would never be called on
reserved inodes. However, (after the commit 8e22c1a4e logfs: get rid
of magical inodes) while unmounting the file system, in put_super, we
call iput() on all of the reserved inodes.

The following simple test used to cause a kernel panic on LogFS:

1. Mount a LogFS file system on /mnt

2. Create a file
   $ touch /mnt/a

3. Try to unmount the FS
   $ umount /mnt

The simple fix would be to drop the assumption and properly destroy
the reserved inodes.

Signed-off-by: Prasad Joshi &lt;prasadjoshi.linux@gmail.com&gt;
</pre>
</div>
</content>
</entry>
</feed>
