exofs: clean up the correct page collection on write error
authorIdan Kedar <idank@tonian.com>
Fri, 30 Nov 2012 14:03:31 +0000 (16:03 +0200)
committerBoaz Harrosh <bharrosh@panasas.com>
Tue, 11 Dec 2012 16:56:18 +0000 (18:56 +0200)
commitaf402ab2b0369c2b1acf4cde72c5ed5050c74e5b
tree0fbd522fc8f42ff3ac3cc6bdece51129fe871392
parentb6755ffb0c03c2e763cc56f72cc2ceaba8ea2805
exofs: clean up the correct page collection on write error

if ore_write() fails, we would unlock the pages of pcol, which is now
empty, rather than pcol_copy which owns the pages when ore_write() is
called. this means that no pages will actually be unlocked
(pcol.nr_pages == 0) and the writing process (more accurately, the
syncing process) will hang waiting for a writeback notification that
never comes.

moreover, if ore_write() fails, pcol_free() is called for pcol, whereas
pcol_copy is the object owning the ore_io_state, thus leaking the
ore_io_state.

[Boaz]
I have simplified Idan's original patch a bit, everything else still
holds

Signed-off-by: Idan Kedar <idank@tonian.com>
Signed-off-by: Boaz Harrosh <bharrosh@panasas.com>
fs/exofs/inode.c