• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/fs/nilfs2/

Lines Matching defs:sufile

2  * sufile.c - NILFS segment usage file.
31 #include "sufile.h"
39 static inline struct nilfs_sufile_info *NILFS_SUI(struct inode *sufile)
41 return (struct nilfs_sufile_info *)NILFS_MDT(sufile);
45 nilfs_sufile_segment_usages_per_block(const struct inode *sufile)
47 return NILFS_MDT(sufile)->mi_entries_per_block;
51 nilfs_sufile_get_blkoff(const struct inode *sufile, __u64 segnum)
53 __u64 t = segnum + NILFS_MDT(sufile)->mi_first_entry_offset;
54 do_div(t, nilfs_sufile_segment_usages_per_block(sufile));
59 nilfs_sufile_get_offset(const struct inode *sufile, __u64 segnum)
61 __u64 t = segnum + NILFS_MDT(sufile)->mi_first_entry_offset;
62 return do_div(t, nilfs_sufile_segment_usages_per_block(sufile));
66 nilfs_sufile_segment_usages_in_block(const struct inode *sufile, __u64 curr,
70 nilfs_sufile_segment_usages_per_block(sufile) -
71 nilfs_sufile_get_offset(sufile, curr),
76 nilfs_sufile_block_get_segment_usage(const struct inode *sufile, __u64 segnum,
80 nilfs_sufile_get_offset(sufile, segnum) *
81 NILFS_MDT(sufile)->mi_entry_size;
84 static inline int nilfs_sufile_get_header_block(struct inode *sufile,
87 return nilfs_mdt_get_block(sufile, 0, 0, NULL, bhp);
91 nilfs_sufile_get_segment_usage_block(struct inode *sufile, __u64 segnum,
94 return nilfs_mdt_get_block(sufile,
95 nilfs_sufile_get_blkoff(sufile, segnum),
116 * @sufile: inode of segment usage file
118 unsigned long nilfs_sufile_get_ncleansegs(struct inode *sufile)
120 return NILFS_SUI(sufile)->ncleansegs;
125 * @sufile: inode of segment usage file
134 * buffers of a header block and the sufile block in which the target
151 int nilfs_sufile_updatev(struct inode *sufile, __u64 *segnumv, size_t nsegs,
166 down_write(&NILFS_MDT(sufile)->mi_sem);
168 if (unlikely(*seg >= nilfs_sufile_get_nsegments(sufile))) {
180 ret = nilfs_sufile_get_header_block(sufile, &header_bh);
185 blkoff = nilfs_sufile_get_blkoff(sufile, *seg);
186 ret = nilfs_mdt_get_block(sufile, blkoff, create, NULL, &bh);
191 dofunc(sufile, *seg, header_bh, bh);
196 blkoff = nilfs_sufile_get_blkoff(sufile, *seg);
202 ret = nilfs_mdt_get_block(sufile, blkoff, create, NULL, &bh);
212 up_write(&NILFS_MDT(sufile)->mi_sem);
219 int nilfs_sufile_update(struct inode *sufile, __u64 segnum, int create,
227 if (unlikely(segnum >= nilfs_sufile_get_nsegments(sufile))) {
232 down_write(&NILFS_MDT(sufile)->mi_sem);
234 ret = nilfs_sufile_get_header_block(sufile, &header_bh);
238 ret = nilfs_sufile_get_segment_usage_block(sufile, segnum, create, &bh);
240 dofunc(sufile, segnum, header_bh, bh);
246 up_write(&NILFS_MDT(sufile)->mi_sem);
252 * @sufile: inode of segment usage file
267 int nilfs_sufile_alloc(struct inode *sufile, __u64 *segnump)
272 size_t susz = NILFS_MDT(sufile)->mi_entry_size;
278 down_write(&NILFS_MDT(sufile)->mi_sem);
280 ret = nilfs_sufile_get_header_block(sufile, &header_bh);
289 nsegments = nilfs_sufile_get_nsegments(sufile);
298 ret = nilfs_sufile_get_segment_usage_block(sufile, segnum, 1,
304 sufile, segnum, su_bh, kaddr);
307 sufile, segnum, maxsegnum);
322 NILFS_SUI(sufile)->ncleansegs--;
325 nilfs_mdt_mark_dirty(sufile);
342 up_write(&NILFS_MDT(sufile)->mi_sem);
346 void nilfs_sufile_do_cancel_free(struct inode *sufile, __u64 segnum,
354 su = nilfs_sufile_block_get_segment_usage(sufile, segnum, su_bh, kaddr);
365 NILFS_SUI(sufile)->ncleansegs--;
368 nilfs_mdt_mark_dirty(sufile);
371 void nilfs_sufile_do_scrap(struct inode *sufile, __u64 segnum,
380 su = nilfs_sufile_block_get_segment_usage(sufile, segnum, su_bh, kaddr);
396 NILFS_SUI(sufile)->ncleansegs -= clean;
399 nilfs_mdt_mark_dirty(sufile);
402 void nilfs_sufile_do_free(struct inode *sufile, __u64 segnum,
411 su = nilfs_sufile_block_get_segment_usage(sufile, segnum, su_bh, kaddr);
427 NILFS_SUI(sufile)->ncleansegs++;
429 nilfs_mdt_mark_dirty(sufile);
434 * @sufile: inode of segment usage file
437 int nilfs_sufile_mark_dirty(struct inode *sufile, __u64 segnum)
442 ret = nilfs_sufile_get_segment_usage_block(sufile, segnum, 0, &bh);
445 nilfs_mdt_mark_dirty(sufile);
453 * @sufile: inode of segment usage file
458 int nilfs_sufile_set_segment_usage(struct inode *sufile, __u64 segnum,
466 down_write(&NILFS_MDT(sufile)->mi_sem);
467 ret = nilfs_sufile_get_segment_usage_block(sufile, segnum, 0, &bh);
472 su = nilfs_sufile_block_get_segment_usage(sufile, segnum, bh, kaddr);
480 nilfs_mdt_mark_dirty(sufile);
484 up_write(&NILFS_MDT(sufile)->mi_sem);
490 * @sufile: inode of segment usage file
504 int nilfs_sufile_get_stat(struct inode *sufile, struct nilfs_sustat *sustat)
508 struct the_nilfs *nilfs = NILFS_MDT(sufile)->mi_nilfs;
512 down_read(&NILFS_MDT(sufile)->mi_sem);
514 ret = nilfs_sufile_get_header_block(sufile, &header_bh);
520 sustat->ss_nsegs = nilfs_sufile_get_nsegments(sufile);
532 up_read(&NILFS_MDT(sufile)->mi_sem);
536 void nilfs_sufile_do_set_error(struct inode *sufile, __u64 segnum,
545 su = nilfs_sufile_block_get_segment_usage(sufile, segnum, su_bh, kaddr);
556 NILFS_SUI(sufile)->ncleansegs--;
559 nilfs_mdt_mark_dirty(sufile);
564 * @sufile: inode of segment usage file
579 ssize_t nilfs_sufile_get_suinfo(struct inode *sufile, __u64 segnum, void *buf,
585 size_t susz = NILFS_MDT(sufile)->mi_entry_size;
586 struct the_nilfs *nilfs = NILFS_MDT(sufile)->mi_nilfs;
592 down_read(&NILFS_MDT(sufile)->mi_sem);
594 segusages_per_block = nilfs_sufile_segment_usages_per_block(sufile);
596 nilfs_sufile_get_nsegments(sufile) - segnum,
601 nilfs_sufile_get_offset(sufile, segnum),
603 ret = nilfs_sufile_get_segment_usage_block(sufile, segnum, 0,
616 sufile, segnum, su_bh, kaddr);
633 up_read(&NILFS_MDT(sufile)->mi_sem);
638 * nilfs_sufile_read - read sufile inode
639 * @sufile: sufile inode
640 * @raw_inode: on-disk sufile inode
642 int nilfs_sufile_read(struct inode *sufile, struct nilfs_inode *raw_inode)
644 struct nilfs_sufile_info *sui = NILFS_SUI(sufile);
650 ret = nilfs_read_inode_common(sufile, raw_inode);
654 ret = nilfs_sufile_get_header_block(sufile, &header_bh);
666 * nilfs_sufile_new - create sufile
672 struct inode *sufile;
674 sufile = nilfs_mdt_new(nilfs, NULL, NILFS_SUFILE_INO,
676 if (sufile)
677 nilfs_mdt_set_entry_size(sufile, susize,
679 return sufile;