diff options
author | Mark Fasheh <mark.fasheh@oracle.com> | 2007-02-09 23:52:53 -0500 |
---|---|---|
committer | Mark Fasheh <mark.fasheh@oracle.com> | 2007-04-26 18:02:12 -0400 |
commit | 5069120b7227fd323152a3755a0aa6bdeb361310 (patch) | |
tree | 38f55942537178098b4e3a3996bb0f02787dbb51 /fs/ocfs2 | |
parent | 9517bac6cc7a7aa4fee63cb38a32cb6014e264c7 (diff) |
ocfs2: remove ocfs2_prepare_write() and ocfs2_commit_write()
These are no longer used, and can't handle file systems with sparse file
allocation.
Signed-off-by: Mark Fasheh <mark.fasheh@oracle.com>
Diffstat (limited to 'fs/ocfs2')
-rw-r--r-- | fs/ocfs2/aops.c | 125 |
1 files changed, 5 insertions, 120 deletions
diff --git a/fs/ocfs2/aops.c b/fs/ocfs2/aops.c index 5ffb3702b5e9..8368036f434a 100644 --- a/fs/ocfs2/aops.c +++ b/fs/ocfs2/aops.c | |||
@@ -277,8 +277,11 @@ static int ocfs2_writepage(struct page *page, struct writeback_control *wbc) | |||
277 | return ret; | 277 | return ret; |
278 | } | 278 | } |
279 | 279 | ||
280 | /* This can also be called from ocfs2_write_zero_page() which has done | 280 | /* |
281 | * it's own cluster locking. */ | 281 | * This is called from ocfs2_write_zero_page() which has handled it's |
282 | * own cluster locking and has ensured allocation exists for those | ||
283 | * blocks to be written. | ||
284 | */ | ||
282 | int ocfs2_prepare_write_nolock(struct inode *inode, struct page *page, | 285 | int ocfs2_prepare_write_nolock(struct inode *inode, struct page *page, |
283 | unsigned from, unsigned to) | 286 | unsigned from, unsigned to) |
284 | { | 287 | { |
@@ -293,33 +296,6 @@ int ocfs2_prepare_write_nolock(struct inode *inode, struct page *page, | |||
293 | return ret; | 296 | return ret; |
294 | } | 297 | } |
295 | 298 | ||
296 | /* | ||
297 | * ocfs2_prepare_write() can be an outer-most ocfs2 call when it is called | ||
298 | * from loopback. It must be able to perform its own locking around | ||
299 | * ocfs2_get_block(). | ||
300 | */ | ||
301 | static int ocfs2_prepare_write(struct file *file, struct page *page, | ||
302 | unsigned from, unsigned to) | ||
303 | { | ||
304 | struct inode *inode = page->mapping->host; | ||
305 | int ret; | ||
306 | |||
307 | mlog_entry("(0x%p, 0x%p, %u, %u)\n", file, page, from, to); | ||
308 | |||
309 | ret = ocfs2_meta_lock_with_page(inode, NULL, 0, page); | ||
310 | if (ret != 0) { | ||
311 | mlog_errno(ret); | ||
312 | goto out; | ||
313 | } | ||
314 | |||
315 | ret = ocfs2_prepare_write_nolock(inode, page, from, to); | ||
316 | |||
317 | ocfs2_meta_unlock(inode, 0); | ||
318 | out: | ||
319 | mlog_exit(ret); | ||
320 | return ret; | ||
321 | } | ||
322 | |||
323 | /* Taken from ext3. We don't necessarily need the full blown | 299 | /* Taken from ext3. We don't necessarily need the full blown |
324 | * functionality yet, but IMHO it's better to cut and paste the whole | 300 | * functionality yet, but IMHO it's better to cut and paste the whole |
325 | * thing so we can avoid introducing our own bugs (and easily pick up | 301 | * thing so we can avoid introducing our own bugs (and easily pick up |
@@ -389,95 +365,6 @@ out: | |||
389 | return handle; | 365 | return handle; |
390 | } | 366 | } |
391 | 367 | ||
392 | static int ocfs2_commit_write(struct file *file, struct page *page, | ||
393 | unsigned from, unsigned to) | ||
394 | { | ||
395 | int ret; | ||
396 | struct buffer_head *di_bh = NULL; | ||
397 | struct inode *inode = page->mapping->host; | ||
398 | handle_t *handle = NULL; | ||
399 | struct ocfs2_dinode *di; | ||
400 | |||
401 | mlog_entry("(0x%p, 0x%p, %u, %u)\n", file, page, from, to); | ||
402 | |||
403 | /* NOTE: ocfs2_file_aio_write has ensured that it's safe for | ||
404 | * us to continue here without rechecking the I/O against | ||
405 | * changed inode values. | ||
406 | * | ||
407 | * 1) We're currently holding the inode alloc lock, so no | ||
408 | * nodes can change it underneath us. | ||
409 | * | ||
410 | * 2) We've had to take the metadata lock at least once | ||
411 | * already to check for extending writes, suid removal, etc. | ||
412 | * The meta data update code then ensures that we don't get a | ||
413 | * stale inode allocation image (i_size, i_clusters, etc). | ||
414 | */ | ||
415 | |||
416 | ret = ocfs2_meta_lock_with_page(inode, &di_bh, 1, page); | ||
417 | if (ret != 0) { | ||
418 | mlog_errno(ret); | ||
419 | goto out; | ||
420 | } | ||
421 | |||
422 | ret = ocfs2_data_lock_with_page(inode, 1, page); | ||
423 | if (ret != 0) { | ||
424 | mlog_errno(ret); | ||
425 | goto out_unlock_meta; | ||
426 | } | ||
427 | |||
428 | handle = ocfs2_start_walk_page_trans(inode, page, from, to); | ||
429 | if (IS_ERR(handle)) { | ||
430 | ret = PTR_ERR(handle); | ||
431 | goto out_unlock_data; | ||
432 | } | ||
433 | |||
434 | /* Mark our buffer early. We'd rather catch this error up here | ||
435 | * as opposed to after a successful commit_write which would | ||
436 | * require us to set back inode->i_size. */ | ||
437 | ret = ocfs2_journal_access(handle, inode, di_bh, | ||
438 | OCFS2_JOURNAL_ACCESS_WRITE); | ||
439 | if (ret < 0) { | ||
440 | mlog_errno(ret); | ||
441 | goto out_commit; | ||
442 | } | ||
443 | |||
444 | /* might update i_size */ | ||
445 | ret = generic_commit_write(file, page, from, to); | ||
446 | if (ret < 0) { | ||
447 | mlog_errno(ret); | ||
448 | goto out_commit; | ||
449 | } | ||
450 | |||
451 | di = (struct ocfs2_dinode *)di_bh->b_data; | ||
452 | |||
453 | /* ocfs2_mark_inode_dirty() is too heavy to use here. */ | ||
454 | inode->i_mtime = inode->i_ctime = CURRENT_TIME; | ||
455 | di->i_mtime = di->i_ctime = cpu_to_le64(inode->i_mtime.tv_sec); | ||
456 | di->i_mtime_nsec = di->i_ctime_nsec = cpu_to_le32(inode->i_mtime.tv_nsec); | ||
457 | |||
458 | inode->i_blocks = ocfs2_align_bytes_to_sectors((u64)(i_size_read(inode))); | ||
459 | di->i_size = cpu_to_le64((u64)i_size_read(inode)); | ||
460 | |||
461 | ret = ocfs2_journal_dirty(handle, di_bh); | ||
462 | if (ret < 0) { | ||
463 | mlog_errno(ret); | ||
464 | goto out_commit; | ||
465 | } | ||
466 | |||
467 | out_commit: | ||
468 | ocfs2_commit_trans(OCFS2_SB(inode->i_sb), handle); | ||
469 | out_unlock_data: | ||
470 | ocfs2_data_unlock(inode, 1); | ||
471 | out_unlock_meta: | ||
472 | ocfs2_meta_unlock(inode, 1); | ||
473 | out: | ||
474 | if (di_bh) | ||
475 | brelse(di_bh); | ||
476 | |||
477 | mlog_exit(ret); | ||
478 | return ret; | ||
479 | } | ||
480 | |||
481 | static sector_t ocfs2_bmap(struct address_space *mapping, sector_t block) | 368 | static sector_t ocfs2_bmap(struct address_space *mapping, sector_t block) |
482 | { | 369 | { |
483 | sector_t status; | 370 | sector_t status; |
@@ -1323,8 +1210,6 @@ out: | |||
1323 | const struct address_space_operations ocfs2_aops = { | 1210 | const struct address_space_operations ocfs2_aops = { |
1324 | .readpage = ocfs2_readpage, | 1211 | .readpage = ocfs2_readpage, |
1325 | .writepage = ocfs2_writepage, | 1212 | .writepage = ocfs2_writepage, |
1326 | .prepare_write = ocfs2_prepare_write, | ||
1327 | .commit_write = ocfs2_commit_write, | ||
1328 | .bmap = ocfs2_bmap, | 1213 | .bmap = ocfs2_bmap, |
1329 | .sync_page = block_sync_page, | 1214 | .sync_page = block_sync_page, |
1330 | .direct_IO = ocfs2_direct_IO, | 1215 | .direct_IO = ocfs2_direct_IO, |