ioctl.c (d2e7ad19229f982fc1eb731827d82ceac90abfb3) | ioctl.c (365e215ce1f154e288ff0f7c9acbdf5421f57949) |
---|---|
1/* 2 * ioctl.c - NILFS ioctl operations. 3 * 4 * Copyright (C) 2007, 2008 Nippon Telegraph and Telephone Corporation. 5 * 6 * This program is free software; you can redistribute it and/or modify 7 * it under the terms of the GNU General Public License as published by 8 * the Free Software Foundation; either version 2 of the License, or --- 219 unchanged lines hidden (view full) --- 228 229static ssize_t 230nilfs_ioctl_do_get_vinfo(struct the_nilfs *nilfs, __u64 *posp, int flags, 231 void *buf, size_t size, size_t nmembs) 232{ 233 int ret; 234 235 down_read(&nilfs->ns_segctor_sem); | 1/* 2 * ioctl.c - NILFS ioctl operations. 3 * 4 * Copyright (C) 2007, 2008 Nippon Telegraph and Telephone Corporation. 5 * 6 * This program is free software; you can redistribute it and/or modify 7 * it under the terms of the GNU General Public License as published by 8 * the Free Software Foundation; either version 2 of the License, or --- 219 unchanged lines hidden (view full) --- 228 229static ssize_t 230nilfs_ioctl_do_get_vinfo(struct the_nilfs *nilfs, __u64 *posp, int flags, 231 void *buf, size_t size, size_t nmembs) 232{ 233 int ret; 234 235 down_read(&nilfs->ns_segctor_sem); |
236 ret = nilfs_dat_get_vinfo(nilfs_dat_inode(nilfs), buf, size, nmembs); | 236 ret = nilfs_dat_get_vinfo(nilfs->ns_dat, buf, size, nmembs); |
237 up_read(&nilfs->ns_segctor_sem); 238 return ret; 239} 240 241static ssize_t 242nilfs_ioctl_do_get_bdescs(struct the_nilfs *nilfs, __u64 *posp, int flags, 243 void *buf, size_t size, size_t nmembs) 244{ | 237 up_read(&nilfs->ns_segctor_sem); 238 return ret; 239} 240 241static ssize_t 242nilfs_ioctl_do_get_bdescs(struct the_nilfs *nilfs, __u64 *posp, int flags, 243 void *buf, size_t size, size_t nmembs) 244{ |
245 struct inode *dat = nilfs_dat_inode(nilfs); 246 struct nilfs_bmap *bmap = NILFS_I(dat)->i_bmap; | 245 struct nilfs_bmap *bmap = NILFS_I(nilfs->ns_dat)->i_bmap; |
247 struct nilfs_bdesc *bdescs = buf; 248 int ret, i; 249 250 down_read(&nilfs->ns_segctor_sem); 251 for (i = 0; i < nmembs; i++) { 252 ret = nilfs_bmap_lookup_at_level(bmap, 253 bdescs[i].bd_offset, 254 bdescs[i].bd_level + 1, --- 161 unchanged lines hidden (view full) --- 416} 417 418static int nilfs_ioctl_free_vblocknrs(struct the_nilfs *nilfs, 419 struct nilfs_argv *argv, void *buf) 420{ 421 size_t nmembs = argv->v_nmembs; 422 int ret; 423 | 246 struct nilfs_bdesc *bdescs = buf; 247 int ret, i; 248 249 down_read(&nilfs->ns_segctor_sem); 250 for (i = 0; i < nmembs; i++) { 251 ret = nilfs_bmap_lookup_at_level(bmap, 252 bdescs[i].bd_offset, 253 bdescs[i].bd_level + 1, --- 161 unchanged lines hidden (view full) --- 415} 416 417static int nilfs_ioctl_free_vblocknrs(struct the_nilfs *nilfs, 418 struct nilfs_argv *argv, void *buf) 419{ 420 size_t nmembs = argv->v_nmembs; 421 int ret; 422 |
424 ret = nilfs_dat_freev(nilfs_dat_inode(nilfs), buf, nmembs); | 423 ret = nilfs_dat_freev(nilfs->ns_dat, buf, nmembs); |
425 426 return (ret < 0) ? ret : nmembs; 427} 428 429static int nilfs_ioctl_mark_blocks_dirty(struct the_nilfs *nilfs, 430 struct nilfs_argv *argv, void *buf) 431{ 432 size_t nmembs = argv->v_nmembs; | 424 425 return (ret < 0) ? ret : nmembs; 426} 427 428static int nilfs_ioctl_mark_blocks_dirty(struct the_nilfs *nilfs, 429 struct nilfs_argv *argv, void *buf) 430{ 431 size_t nmembs = argv->v_nmembs; |
433 struct inode *dat = nilfs_dat_inode(nilfs); 434 struct nilfs_bmap *bmap = NILFS_I(dat)->i_bmap; | 432 struct nilfs_bmap *bmap = NILFS_I(nilfs->ns_dat)->i_bmap; |
435 struct nilfs_bdesc *bdescs = buf; 436 int ret, i; 437 438 for (i = 0; i < nmembs; i++) { 439 /* XXX: use macro or inline func to check liveness */ 440 ret = nilfs_bmap_lookup_at_level(bmap, 441 bdescs[i].bd_offset, 442 bdescs[i].bd_level + 1, 443 &bdescs[i].bd_blocknr); 444 if (ret < 0) { 445 if (ret != -ENOENT) 446 return ret; 447 bdescs[i].bd_blocknr = 0; 448 } 449 if (bdescs[i].bd_blocknr != bdescs[i].bd_oblocknr) 450 /* skip dead block */ 451 continue; 452 if (bdescs[i].bd_level == 0) { | 433 struct nilfs_bdesc *bdescs = buf; 434 int ret, i; 435 436 for (i = 0; i < nmembs; i++) { 437 /* XXX: use macro or inline func to check liveness */ 438 ret = nilfs_bmap_lookup_at_level(bmap, 439 bdescs[i].bd_offset, 440 bdescs[i].bd_level + 1, 441 &bdescs[i].bd_blocknr); 442 if (ret < 0) { 443 if (ret != -ENOENT) 444 return ret; 445 bdescs[i].bd_blocknr = 0; 446 } 447 if (bdescs[i].bd_blocknr != bdescs[i].bd_oblocknr) 448 /* skip dead block */ 449 continue; 450 if (bdescs[i].bd_level == 0) { |
453 ret = nilfs_mdt_mark_block_dirty(dat, | 451 ret = nilfs_mdt_mark_block_dirty(nilfs->ns_dat, |
454 bdescs[i].bd_offset); 455 if (ret < 0) { 456 WARN_ON(ret == -ENOENT); 457 return ret; 458 } 459 } else { 460 ret = nilfs_bmap_mark(bmap, bdescs[i].bd_offset, 461 bdescs[i].bd_level); --- 239 unchanged lines hidden --- | 452 bdescs[i].bd_offset); 453 if (ret < 0) { 454 WARN_ON(ret == -ENOENT); 455 return ret; 456 } 457 } else { 458 ret = nilfs_bmap_mark(bmap, bdescs[i].bd_offset, 459 bdescs[i].bd_level); --- 239 unchanged lines hidden --- |