<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux/fs/ubifs, branch v2.6.39-rc2</title>
<subtitle>Linux Kernel (branches are rebased on master from time to time)</subtitle>
<id>https://sre.ring0.de/linux/atom?h=v2.6.39-rc2</id>
<link rel='self' href='https://sre.ring0.de/linux/atom?h=v2.6.39-rc2'/>
<link rel='alternate' type='text/html' href='https://sre.ring0.de/linux/'/>
<updated>2011-04-05T21:51:48Z</updated>
<entry>
<title>fs: export empty_aops</title>
<updated>2011-04-05T21:51:48Z</updated>
<author>
<name>Jens Axboe</name>
<email>jaxboe@fusionio.com</email>
</author>
<published>2011-04-05T21:51:48Z</published>
<link rel='alternate' type='text/html' href='https://sre.ring0.de/linux/commit/?id=7dcda1c96d7c643101d4a05579ef4512a4baa7ef'/>
<id>urn:sha1:7dcda1c96d7c643101d4a05579ef4512a4baa7ef</id>
<content type='text'>
With the -&gt;sync_page() hook gone, we have a few users that
add their own static address_space_operations without any
functions defined.

fs/inode.c already has an empty_aops that it uses for init
purposes. Lets export that and use it in the places where
an otherwise empty aops was defined.

Signed-off-by: Jens Axboe &lt;jaxboe@fusionio.com&gt;
</content>
</entry>
<entry>
<title>Merge branch 'for-2.6.39/core' of git://git.kernel.dk/linux-2.6-block</title>
<updated>2011-03-24T17:16:26Z</updated>
<author>
<name>Linus Torvalds</name>
<email>torvalds@linux-foundation.org</email>
</author>
<published>2011-03-24T17:16:26Z</published>
<link rel='alternate' type='text/html' href='https://sre.ring0.de/linux/commit/?id=6c5103890057b1bb781b26b7aae38d33e4c517d8'/>
<id>urn:sha1:6c5103890057b1bb781b26b7aae38d33e4c517d8</id>
<content type='text'>
* 'for-2.6.39/core' of git://git.kernel.dk/linux-2.6-block: (65 commits)
  Documentation/iostats.txt: bit-size reference etc.
  cfq-iosched: removing unnecessary think time checking
  cfq-iosched: Don't clear queue stats when preempt.
  blk-throttle: Reset group slice when limits are changed
  blk-cgroup: Only give unaccounted_time under debug
  cfq-iosched: Don't set active queue in preempt
  block: fix non-atomic access to genhd inflight structures
  block: attempt to merge with existing requests on plug flush
  block: NULL dereference on error path in __blkdev_get()
  cfq-iosched: Don't update group weights when on service tree
  fs: assign sb-&gt;s_bdi to default_backing_dev_info if the bdi is going away
  block: Require subsystems to explicitly allocate bio_set integrity mempool
  jbd2: finish conversion from WRITE_SYNC_PLUG to WRITE_SYNC and explicit plugging
  jbd: finish conversion from WRITE_SYNC_PLUG to WRITE_SYNC and explicit plugging
  fs: make fsync_buffers_list() plug
  mm: make generic_writepages() use plugging
  blk-cgroup: Add unaccounted time to timeslice_used.
  block: fixup plugging stubs for !CONFIG_BLOCK
  block: remove obsolete comments for blkdev_issue_zeroout.
  blktrace: Use rq-&gt;cmd_flags directly in blk_add_trace_rq.
  ...

Fix up conflicts in fs/{aio.c,super.c}
</content>
</entry>
<entry>
<title>Merge branch 'for-linus' of git://git.infradead.org/ubi-2.6</title>
<updated>2011-03-24T15:22:34Z</updated>
<author>
<name>Linus Torvalds</name>
<email>torvalds@linux-foundation.org</email>
</author>
<published>2011-03-24T15:22:34Z</published>
<link rel='alternate' type='text/html' href='https://sre.ring0.de/linux/commit/?id=fdc0ad80a4f27efcb457b49f5dd8455a3d623559'/>
<id>urn:sha1:fdc0ad80a4f27efcb457b49f5dd8455a3d623559</id>
<content type='text'>
* 'for-linus' of git://git.infradead.org/ubi-2.6:
  UBIFS: fix assertion warning and refine comments
  UBIFS: kill CONFIG_UBIFS_FS_DEBUG_CHKS
  UBIFS: use GFP_NOFS properly
  UBI: use GFP_NOFS properly
</content>
</entry>
<entry>
<title>UBIFS: fix assertion warning and refine comments</title>
<updated>2011-03-24T14:16:18Z</updated>
<author>
<name>Artem Bityutskiy</name>
<email>Artem.Bityutskiy@nokia.com</email>
</author>
<published>2011-03-23T08:32:58Z</published>
<link rel='alternate' type='text/html' href='https://sre.ring0.de/linux/commit/?id=6ed09c34b7984a978a73a855f4c2e6662acc8bdb'/>
<id>urn:sha1:6ed09c34b7984a978a73a855f4c2e6662acc8bdb</id>
<content type='text'>
This patch fixes the following UBIFS assertion warning:

UBIFS assert failed in do_readpage at 115 (pid 199)
[&lt;b00321b8&gt;] (unwind_backtrace+0x0/0xdc) from [&lt;af025118&gt;]
(do_readpage+0x108/0x594 [ubifs])
[&lt;af025118&gt;] (do_readpage+0x108/0x594 [ubifs]) from [&lt;af025764&gt;]
(ubifs_write_end+0x1c0/0x2e8 [ubifs])
[&lt;af025764&gt;] (ubifs_write_end+0x1c0/0x2e8 [ubifs]) from
[&lt;b00a0164&gt;] (generic_file_buffered_write+0x18c/0x270)
[&lt;b00a0164&gt;] (generic_file_buffered_write+0x18c/0x270) from
[&lt;b00a08d4&gt;] (__generic_file_aio_write+0x478/0x4c0)
[&lt;b00a08d4&gt;] (__generic_file_aio_write+0x478/0x4c0) from
[&lt;b00a0984&gt;] (generic_file_aio_write+0x68/0xc8)
[&lt;b00a0984&gt;] (generic_file_aio_write+0x68/0xc8) from
[&lt;af024a78&gt;] (ubifs_aio_write+0x178/0x1d8 [ubifs])
[&lt;af024a78&gt;] (ubifs_aio_write+0x178/0x1d8 [ubifs]) from
[&lt;b00d104c&gt;] (do_sync_write+0xb0/0x100)
[&lt;b00d104c&gt;] (do_sync_write+0xb0/0x100) from [&lt;b00d1abc&gt;]
(vfs_write+0xac/0x154)
[&lt;b00d1abc&gt;] (vfs_write+0xac/0x154) from [&lt;b00d1c10&gt;]
(sys_write+0x3c/0x68)
[&lt;b00d1c10&gt;] (sys_write+0x3c/0x68) from [&lt;b002d9a0&gt;]
(ret_fast_syscall+0x0/0x2c)

The 'PG_checked' flag is used to indicate that the page does not
supposedly exist on the media (e.g., a hole or a page beyond the
inode size), so it requires slightly bigger budget, because we have
to account the indexing size increase. And this flag basically
tells that the budget for this page has to be "new page budget".
The "new page budget" is slightly bigger than the "existing page
budget".

The 'do_readpage()' function has the following assertion which
sometimes is hit: 'ubifs_assert(!PageChecked(page))'. Obviously,
the meaning of this assertion is: "I should not be asked to read
a page which does not exist on the media".

However, in 'ubifs_write_begin()' we have a small "trick". Notice,
that VFS may write pages which were not read yet, so the page data
were not loaded from the media to the page cache yet. If VFS tells
that it is going to change only some part of the page, we obviously
have to load it from the media. However, if VFS tells that it is
going to change whole page, we do not read it from the media for
optimization purposes.

However, since we do not read it, we do not know if it exists on
the media or not (a hole, etc). So we set the 'PG_checked' flag
to this page to force bigger budget, just in case.

So 'ubifs_write_begin()' sets 'PG_checked'. Then we are in
'ubifs_write_end()'. And VFS tells us: "hey, for some reasons I
changed my mind and did not change whole page". Frankly, I do not
know why this happens, but I hit this somehow on an ARM platform.
And this is extremely rare.

So in this case UBIFS does the following:

1. Cancels allocated budget.
2. Loads the page from the media by calling 'do_readpage()'.
3. Asks VFS to repeat the whole write operation from the very
   beginning (call '-&gt;write_begin() again, etc).

And the assertion warning is hit at the step 2 - remember we have
the 'PG_checked' set for this page, and 'do_readpage()' does not
like this. So this patch fixes the problem by adding step 1.5 and
cleaning the 'PG_checked' before calling 'do_readpage()'.

All in all, this patch does not fix any functionality issue, but it
silences UBIFS false positive warning which may happen in very very
rare cases.

And while on it, this patch also improves a commentary which explains
the reasons of setting the 'PG_checked' flag for the page. The old
commentary was a bit difficult to understand.

Signed-off-by: Artem Bityutskiy &lt;Artem.Bityutskiy@nokia.com&gt;
</content>
</entry>
<entry>
<title>UBIFS: kill CONFIG_UBIFS_FS_DEBUG_CHKS</title>
<updated>2011-03-24T14:16:08Z</updated>
<author>
<name>Artem Bityutskiy</name>
<email>Artem.Bityutskiy@nokia.com</email>
</author>
<published>2011-03-21T14:16:29Z</published>
<link rel='alternate' type='text/html' href='https://sre.ring0.de/linux/commit/?id=9d523cafbe0dab5a2b873ecd85c37fec9d1368f3'/>
<id>urn:sha1:9d523cafbe0dab5a2b873ecd85c37fec9d1368f3</id>
<content type='text'>
Simplify UBIFS configuration menu and kill the option to enable self-check
compile-time. We do not really need this because we can do this run-time
using the module parameters or the corresponding sysfs interfaces. And
there is a value in simplifying the kernel configuration menu which becomes
increasingly large.

Signed-off-by: Artem Bityutskiy &lt;Artem.Bityutskiy@nokia.com&gt;
</content>
</entry>
<entry>
<title>UBIFS: use GFP_NOFS properly</title>
<updated>2011-03-24T14:14:26Z</updated>
<author>
<name>Artem Bityutskiy</name>
<email>Artem.Bityutskiy@nokia.com</email>
</author>
<published>2011-03-24T14:14:26Z</published>
<link rel='alternate' type='text/html' href='https://sre.ring0.de/linux/commit/?id=fc5e58c0c4fd86881ec8ba8e46e41a07e25dc7a6'/>
<id>urn:sha1:fc5e58c0c4fd86881ec8ba8e46e41a07e25dc7a6</id>
<content type='text'>
This patch fixes a brown-paperbag bug which was introduced by me:
I used incorrect "GFP_KERNEL | GFP_NOFS" allocation flags to make
sure my allocations do not cause write-back. But the correct form
is "GFP_NOFS".

Signed-off-by: Artem Bityutskiy &lt;Artem.Bityutskiy@nokia.com&gt;
</content>
</entry>
<entry>
<title>userns: rename is_owner_or_cap to inode_owner_or_capable</title>
<updated>2011-03-24T02:47:13Z</updated>
<author>
<name>Serge E. Hallyn</name>
<email>serge@hallyn.com</email>
</author>
<published>2011-03-23T23:43:26Z</published>
<link rel='alternate' type='text/html' href='https://sre.ring0.de/linux/commit/?id=2e1496707560ecf98e9b0604622c0990f94861d3'/>
<id>urn:sha1:2e1496707560ecf98e9b0604622c0990f94861d3</id>
<content type='text'>
And give it a kernel-doc comment.

[akpm@linux-foundation.org: btrfs changed in linux-next]
Signed-off-by: Serge E. Hallyn &lt;serge.hallyn@canonical.com&gt;
Cc: "Eric W. Biederman" &lt;ebiederm@xmission.com&gt;
Cc: Daniel Lezcano &lt;daniel.lezcano@free.fr&gt;
Acked-by: David Howells &lt;dhowells@redhat.com&gt;
Cc: James Morris &lt;jmorris@namei.org&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>Merge branch 'linux-next' of git://git.infradead.org/ubifs-2.6</title>
<updated>2011-03-18T17:50:27Z</updated>
<author>
<name>Linus Torvalds</name>
<email>torvalds@linux-foundation.org</email>
</author>
<published>2011-03-18T17:50:27Z</published>
<link rel='alternate' type='text/html' href='https://sre.ring0.de/linux/commit/?id=8f627a8a881481598c2591c3acc122fb9be7bac4'/>
<id>urn:sha1:8f627a8a881481598c2591c3acc122fb9be7bac4</id>
<content type='text'>
* 'linux-next' of git://git.infradead.org/ubifs-2.6: (25 commits)
  UBIFS: clean-up commentaries
  UBIFS: save 128KiB or more RAM
  UBIFS: allocate orphans scan buffer on demand
  UBIFS: allocate lpt dump buffer on demand
  UBIFS: allocate ltab checking buffer on demand
  UBIFS: allocate scanning buffer on demand
  UBIFS: allocate dump buffer on demand
  UBIFS: do not check data crc by default
  UBIFS: simplify UBIFS Kconfig menu
  UBIFS: print max. index node size
  UBIFS: handle allocation failures in UBIFS write path
  UBIFS: use max_write_size during recovery
  UBIFS: use max_write_size for write-buffers
  UBIFS: introduce write-buffer size field
  UBI: incorporate LEB offset information
  UBIFS: incorporate maximum write size
  UBI: provide LEB offset information
  UBI: incorporate maximum write size
  UBIFS: fix LEB number in printk
  UBIFS: restrict world-writable debugfs files
  ...
</content>
</entry>
<entry>
<title>UBIFS: clean-up commentaries</title>
<updated>2011-03-16T12:05:25Z</updated>
<author>
<name>Artem Bityutskiy</name>
<email>Artem.Bityutskiy@nokia.com</email>
</author>
<published>2011-03-14T15:55:40Z</published>
<link rel='alternate' type='text/html' href='https://sre.ring0.de/linux/commit/?id=5d630e43284fdb0613e4e7e7dd906f27bc25b6af'/>
<id>urn:sha1:5d630e43284fdb0613e4e7e7dd906f27bc25b6af</id>
<content type='text'>
Clean-up commentaries in debug.h and remove references to non-existing
symblols.

Signed-off-by: Artem Bityutskiy &lt;Artem.Bityutskiy@nokia.com&gt;
</content>
</entry>
<entry>
<title>UBIFS: save 128KiB or more RAM</title>
<updated>2011-03-16T12:05:25Z</updated>
<author>
<name>Artem Bityutskiy</name>
<email>Artem.Bityutskiy@nokia.com</email>
</author>
<published>2011-03-11T15:15:55Z</published>
<link rel='alternate' type='text/html' href='https://sre.ring0.de/linux/commit/?id=7c83cc91ab1505e53ebfb99b1ea19ed1cf01c1b0'/>
<id>urn:sha1:7c83cc91ab1505e53ebfb99b1ea19ed1cf01c1b0</id>
<content type='text'>
When debugging is enabled, we allocate a buffer of PEB size for
various debugging purposes. However, now all users of this buffer
are gone and we can safely remove it and save 128KiB or more RAM.

Signed-off-by: Artem Bityutskiy &lt;Artem.Bityutskiy@nokia.com&gt;
</content>
</entry>
</feed>
