tag | line | file | source code |
dquot | 46 | fs/dquot.c | static struct dquot *hash_table[NR_DQHASH]; |
dquot | 47 | fs/dquot.c | static struct dquot *first_dquot; |
dquot | 67 | fs/dquot.c | static inline struct dquot **const hash(kdev_t dev, unsigned int id, short type) |
dquot | 80 | fs/dquot.c | static void insert_dquot_free(struct dquot *dquot) |
dquot | 82 | fs/dquot.c | dquot->dq_next = first_dquot; |
dquot | 83 | fs/dquot.c | dquot->dq_prev = first_dquot->dq_prev; |
dquot | 84 | fs/dquot.c | dquot->dq_next->dq_prev = dquot; |
dquot | 85 | fs/dquot.c | dquot->dq_prev->dq_next = dquot; |
dquot | 86 | fs/dquot.c | first_dquot = dquot; |
dquot | 89 | fs/dquot.c | static void remove_dquot_free(struct dquot *dquot) |
dquot | 91 | fs/dquot.c | if (first_dquot == dquot) |
dquot | 93 | fs/dquot.c | if (dquot->dq_next) |
dquot | 94 | fs/dquot.c | dquot->dq_next->dq_prev = dquot->dq_prev; |
dquot | 95 | fs/dquot.c | if (dquot->dq_prev) |
dquot | 96 | fs/dquot.c | dquot->dq_prev->dq_next = dquot->dq_next; |
dquot | 97 | fs/dquot.c | dquot->dq_next = dquot->dq_prev = NODQUOT; |
dquot | 100 | fs/dquot.c | static void insert_dquot_hash(struct dquot *dquot) |
dquot | 102 | fs/dquot.c | struct dquot **hash_ent; |
dquot | 104 | fs/dquot.c | hash_ent = hash(dquot->dq_dev, dquot->dq_id, dquot->dq_type); |
dquot | 105 | fs/dquot.c | dquot->dq_hash_next = *hash_ent; |
dquot | 106 | fs/dquot.c | dquot->dq_hash_prev = NODQUOT; |
dquot | 107 | fs/dquot.c | if (dquot->dq_hash_next) |
dquot | 108 | fs/dquot.c | dquot->dq_hash_next->dq_hash_prev = dquot; |
dquot | 109 | fs/dquot.c | *hash_ent = dquot; |
dquot | 112 | fs/dquot.c | static void remove_dquot_hash(struct dquot *dquot) |
dquot | 114 | fs/dquot.c | struct dquot **hash_ent; |
dquot | 116 | fs/dquot.c | hash_ent = hash(dquot->dq_dev, dquot->dq_id, dquot->dq_type); |
dquot | 117 | fs/dquot.c | if (*hash_ent == dquot) |
dquot | 118 | fs/dquot.c | *hash_ent = dquot->dq_hash_next; |
dquot | 119 | fs/dquot.c | if (dquot->dq_hash_next) |
dquot | 120 | fs/dquot.c | dquot->dq_hash_next->dq_hash_prev = dquot->dq_hash_prev; |
dquot | 121 | fs/dquot.c | if (dquot->dq_hash_prev) |
dquot | 122 | fs/dquot.c | dquot->dq_hash_prev->dq_hash_next = dquot->dq_hash_next; |
dquot | 123 | fs/dquot.c | dquot->dq_hash_prev = dquot->dq_hash_next = NODQUOT; |
dquot | 126 | fs/dquot.c | static void put_last_free(struct dquot *dquot) |
dquot | 128 | fs/dquot.c | remove_dquot_free(dquot); |
dquot | 129 | fs/dquot.c | dquot->dq_prev = first_dquot->dq_prev; |
dquot | 130 | fs/dquot.c | dquot->dq_prev->dq_next = dquot; |
dquot | 131 | fs/dquot.c | dquot->dq_next = first_dquot; |
dquot | 132 | fs/dquot.c | dquot->dq_next->dq_prev = dquot; |
dquot | 137 | fs/dquot.c | struct dquot *dquot; |
dquot | 140 | fs/dquot.c | if (!(dquot = (struct dquot*) get_free_page(GFP_KERNEL))) |
dquot | 143 | fs/dquot.c | cnt = PAGE_SIZE / sizeof(struct dquot); |
dquot | 147 | fs/dquot.c | dquot->dq_next = dquot->dq_prev = first_dquot = dquot++; |
dquot | 151 | fs/dquot.c | insert_dquot_free(dquot++); |
dquot | 157 | fs/dquot.c | static void __wait_on_dquot(struct dquot *dquot) |
dquot | 161 | fs/dquot.c | add_wait_queue(&dquot->dq_wait, &wait); |
dquot | 164 | fs/dquot.c | if (dquot->dq_flags & DQ_LOCKED) { |
dquot | 165 | fs/dquot.c | dquot->dq_flags |= DQ_WANT; |
dquot | 169 | fs/dquot.c | remove_wait_queue(&dquot->dq_wait, &wait); |
dquot | 173 | fs/dquot.c | static inline void wait_on_dquot(struct dquot *dquot) |
dquot | 175 | fs/dquot.c | if (dquot->dq_flags & DQ_LOCKED) |
dquot | 176 | fs/dquot.c | __wait_on_dquot(dquot); |
dquot | 179 | fs/dquot.c | static inline void lock_dquot(struct dquot *dquot) |
dquot | 181 | fs/dquot.c | wait_on_dquot(dquot); |
dquot | 182 | fs/dquot.c | dquot->dq_flags |= DQ_LOCKED; |
dquot | 185 | fs/dquot.c | static inline void unlock_dquot(struct dquot *dquot) |
dquot | 187 | fs/dquot.c | dquot->dq_flags &= ~DQ_LOCKED; |
dquot | 188 | fs/dquot.c | if (dquot->dq_flags & DQ_WANT) { |
dquot | 189 | fs/dquot.c | dquot->dq_flags &= ~DQ_WANT; |
dquot | 190 | fs/dquot.c | wake_up(&dquot->dq_wait); |
dquot | 200 | fs/dquot.c | static void clear_dquot(struct dquot * dquot) |
dquot | 204 | fs/dquot.c | wait_on_dquot(dquot); |
dquot | 205 | fs/dquot.c | remove_dquot_hash(dquot); |
dquot | 206 | fs/dquot.c | remove_dquot_free(dquot); |
dquot | 207 | fs/dquot.c | wait = ((volatile struct dquot *) dquot)->dq_wait; |
dquot | 208 | fs/dquot.c | if (dquot->dq_count) |
dquot | 210 | fs/dquot.c | memset(dquot, 0, sizeof(*dquot)); |
dquot | 211 | fs/dquot.c | ((volatile struct dquot *) dquot)->dq_wait = wait; |
dquot | 212 | fs/dquot.c | insert_dquot_free(dquot); |
dquot | 215 | fs/dquot.c | static void write_dquot(struct dquot *dquot) |
dquot | 217 | fs/dquot.c | short type = dquot->dq_type; |
dquot | 218 | fs/dquot.c | struct file *filp = dquot->dq_mnt->mnt_quotas[type]; |
dquot | 221 | fs/dquot.c | if (!(dquot->dq_flags & DQ_MOD) || (filp == (struct file *)NULL)) |
dquot | 223 | fs/dquot.c | lock_dquot(dquot); |
dquot | 224 | fs/dquot.c | down(&dquot->dq_mnt->mnt_sem); |
dquot | 227 | fs/dquot.c | dqoff(dquot->dq_id), 0) != dqoff(dquot->dq_id)) { |
dquot | 228 | fs/dquot.c | up(&dquot->dq_mnt->mnt_sem); |
dquot | 229 | fs/dquot.c | unlock_dquot(dquot); |
dquot | 233 | fs/dquot.c | filp->f_pos = dqoff(dquot->dq_id); |
dquot | 237 | fs/dquot.c | (char *)&dquot->dq_dqb, sizeof(struct dqblk)) == sizeof(struct dqblk)) |
dquot | 238 | fs/dquot.c | dquot->dq_flags &= ~DQ_MOD; |
dquot | 239 | fs/dquot.c | up(&dquot->dq_mnt->mnt_sem); |
dquot | 241 | fs/dquot.c | unlock_dquot(dquot); |
dquot | 245 | fs/dquot.c | static void read_dquot(struct dquot *dquot) |
dquot | 247 | fs/dquot.c | short type = dquot->dq_type; |
dquot | 248 | fs/dquot.c | struct file *filp = dquot->dq_mnt->mnt_quotas[type]; |
dquot | 253 | fs/dquot.c | lock_dquot(dquot); |
dquot | 254 | fs/dquot.c | down(&dquot->dq_mnt->mnt_sem); |
dquot | 257 | fs/dquot.c | dqoff(dquot->dq_id), 0) != dqoff(dquot->dq_id)) { |
dquot | 258 | fs/dquot.c | up(&dquot->dq_mnt->mnt_sem); |
dquot | 259 | fs/dquot.c | unlock_dquot(dquot); |
dquot | 263 | fs/dquot.c | filp->f_pos = dqoff(dquot->dq_id); |
dquot | 266 | fs/dquot.c | filp->f_op->read(filp->f_inode, filp, (char *)&dquot->dq_dqb, sizeof(struct dqblk)); |
dquot | 267 | fs/dquot.c | up(&dquot->dq_mnt->mnt_sem); |
dquot | 269 | fs/dquot.c | if (dquot->dq_bhardlimit == 0 && dquot->dq_bsoftlimit == 0 && |
dquot | 270 | fs/dquot.c | dquot->dq_ihardlimit == 0 && dquot->dq_isoftlimit == 0) |
dquot | 271 | fs/dquot.c | dquot->dq_flags |= DQ_FAKE; |
dquot | 272 | fs/dquot.c | unlock_dquot(dquot); |
dquot | 278 | fs/dquot.c | struct dquot *dquot = first_dquot; |
dquot | 282 | fs/dquot.c | for (i = 0; i < nr_dquots * 2; i++, dquot = dquot->dq_next) { |
dquot | 283 | fs/dquot.c | if (dev == NODEV || dquot->dq_count == 0 || dquot->dq_dev != dev) |
dquot | 285 | fs/dquot.c | if (type != -1 && dquot->dq_type != type) |
dquot | 287 | fs/dquot.c | wait_on_dquot(dquot); |
dquot | 288 | fs/dquot.c | if (dquot->dq_flags & DQ_MOD) |
dquot | 289 | fs/dquot.c | write_dquot(dquot); |
dquot | 299 | fs/dquot.c | struct dquot *dquot, *next; |
dquot | 304 | fs/dquot.c | dquot = next; |
dquot | 305 | fs/dquot.c | next = dquot->dq_next; |
dquot | 306 | fs/dquot.c | if (dquot->dq_dev != dev || dquot->dq_type != type) |
dquot | 308 | fs/dquot.c | if (dquot->dq_flags & DQ_LOCKED) { |
dquot | 312 | fs/dquot.c | if (dquot->dq_flags & DQ_MOD) |
dquot | 313 | fs/dquot.c | write_dquot(dquot); |
dquot | 315 | fs/dquot.c | clear_dquot(dquot); |
dquot | 319 | fs/dquot.c | static inline void dquot_incr_inodes(struct dquot *dquot, unsigned long number) |
dquot | 321 | fs/dquot.c | lock_dquot(dquot); |
dquot | 322 | fs/dquot.c | dquot->dq_curinodes += number; |
dquot | 323 | fs/dquot.c | dquot->dq_flags |= DQ_MOD; |
dquot | 324 | fs/dquot.c | unlock_dquot(dquot); |
dquot | 327 | fs/dquot.c | static inline void dquot_incr_blocks(struct dquot *dquot, unsigned long number) |
dquot | 329 | fs/dquot.c | lock_dquot(dquot); |
dquot | 330 | fs/dquot.c | dquot->dq_curblocks += number; |
dquot | 331 | fs/dquot.c | dquot->dq_flags |= DQ_MOD; |
dquot | 332 | fs/dquot.c | unlock_dquot(dquot); |
dquot | 335 | fs/dquot.c | static inline void dquot_decr_inodes(struct dquot *dquot, unsigned long number) |
dquot | 337 | fs/dquot.c | lock_dquot(dquot); |
dquot | 338 | fs/dquot.c | if (dquot->dq_curinodes > number) |
dquot | 339 | fs/dquot.c | dquot->dq_curinodes -= number; |
dquot | 341 | fs/dquot.c | dquot->dq_curinodes = 0; |
dquot | 342 | fs/dquot.c | if (dquot->dq_curinodes < dquot->dq_isoftlimit) |
dquot | 343 | fs/dquot.c | dquot->dq_itime = (time_t) 0; |
dquot | 344 | fs/dquot.c | dquot->dq_flags &= ~DQ_INODES; |
dquot | 345 | fs/dquot.c | dquot->dq_flags |= DQ_MOD; |
dquot | 346 | fs/dquot.c | unlock_dquot(dquot); |
dquot | 349 | fs/dquot.c | static inline void dquot_decr_blocks(struct dquot *dquot, unsigned long number) |
dquot | 351 | fs/dquot.c | lock_dquot(dquot); |
dquot | 352 | fs/dquot.c | if (dquot->dq_curblocks > number) |
dquot | 353 | fs/dquot.c | dquot->dq_curblocks -= number; |
dquot | 355 | fs/dquot.c | dquot->dq_curblocks = 0; |
dquot | 356 | fs/dquot.c | if (dquot->dq_curblocks < dquot->dq_bsoftlimit) |
dquot | 357 | fs/dquot.c | dquot->dq_btime = (time_t) 0; |
dquot | 358 | fs/dquot.c | dquot->dq_flags &= ~DQ_BLKS; |
dquot | 359 | fs/dquot.c | dquot->dq_flags |= DQ_MOD; |
dquot | 360 | fs/dquot.c | unlock_dquot(dquot); |
dquot | 363 | fs/dquot.c | static inline int need_print_warning(short type, struct dquot *dquot) |
dquot | 367 | fs/dquot.c | return(current->fsuid == dquot->dq_id); |
dquot | 369 | fs/dquot.c | return(current->fsgid == dquot->dq_id); |
dquot | 374 | fs/dquot.c | static int check_idq(struct dquot *dquot, short type, u_long short inodes) |
dquot | 376 | fs/dquot.c | if (inodes <= 0 || dquot->dq_flags & DQ_FAKE) |
dquot | 378 | fs/dquot.c | if (dquot->dq_ihardlimit && |
dquot | 379 | fs/dquot.c | (dquot->dq_curinodes + inodes) > dquot->dq_ihardlimit && !fsuser()) { |
dquot | 380 | fs/dquot.c | if ((dquot->dq_flags & DQ_INODES) == 0 && |
dquot | 381 | fs/dquot.c | need_print_warning(type, dquot)) { |
dquot | 383 | fs/dquot.c | dquot->dq_mnt->mnt_dirname, quotatypes[type]); |
dquot | 385 | fs/dquot.c | dquot->dq_flags |= DQ_INODES; |
dquot | 389 | fs/dquot.c | if (dquot->dq_isoftlimit && |
dquot | 390 | fs/dquot.c | (dquot->dq_curinodes + inodes) > dquot->dq_isoftlimit && |
dquot | 391 | fs/dquot.c | dquot->dq_itime && CURRENT_TIME >= dquot->dq_itime && !fsuser()) { |
dquot | 392 | fs/dquot.c | if (need_print_warning(type, dquot)) { |
dquot | 394 | fs/dquot.c | dquot->dq_mnt->mnt_dirname, quotatypes[type]); |
dquot | 399 | fs/dquot.c | if (dquot->dq_isoftlimit && |
dquot | 400 | fs/dquot.c | (dquot->dq_curinodes + inodes) > dquot->dq_isoftlimit && |
dquot | 401 | fs/dquot.c | dquot->dq_itime == 0 && !fsuser()) { |
dquot | 402 | fs/dquot.c | if (need_print_warning(type, dquot)) { |
dquot | 404 | fs/dquot.c | dquot->dq_mnt->mnt_dirname, quotatypes[type]); |
dquot | 407 | fs/dquot.c | dquot->dq_itime = CURRENT_TIME + dquot->dq_mnt->mnt_iexp[type]; |
dquot | 412 | fs/dquot.c | static int check_bdq(struct dquot *dquot, short type, u_long blocks) |
dquot | 414 | fs/dquot.c | if (blocks <= 0 || dquot->dq_flags & DQ_FAKE) |
dquot | 416 | fs/dquot.c | if (dquot->dq_bhardlimit && |
dquot | 417 | fs/dquot.c | (dquot->dq_curblocks + blocks) > dquot->dq_bhardlimit && !fsuser()) { |
dquot | 418 | fs/dquot.c | if ((dquot->dq_flags & DQ_BLKS) == 0 && |
dquot | 419 | fs/dquot.c | need_print_warning(type, dquot)) { |
dquot | 421 | fs/dquot.c | dquot->dq_mnt->mnt_dirname, quotatypes[type]); |
dquot | 423 | fs/dquot.c | dquot->dq_flags |= DQ_BLKS; |
dquot | 427 | fs/dquot.c | if (dquot->dq_bsoftlimit && |
dquot | 428 | fs/dquot.c | (dquot->dq_curblocks + blocks) > dquot->dq_bsoftlimit && |
dquot | 429 | fs/dquot.c | dquot->dq_btime && CURRENT_TIME >= dquot->dq_btime && !fsuser()) { |
dquot | 430 | fs/dquot.c | if (need_print_warning(type, dquot)) { |
dquot | 432 | fs/dquot.c | dquot->dq_mnt->mnt_dirname, quotatypes[type]); |
dquot | 437 | fs/dquot.c | if (dquot->dq_bsoftlimit && |
dquot | 438 | fs/dquot.c | (dquot->dq_curblocks + blocks) > dquot->dq_bsoftlimit && |
dquot | 439 | fs/dquot.c | dquot->dq_btime == 0 && !fsuser()) { |
dquot | 440 | fs/dquot.c | if (need_print_warning(type, dquot)) { |
dquot | 442 | fs/dquot.c | dquot->dq_mnt->mnt_dirname, quotatypes[type]); |
dquot | 445 | fs/dquot.c | dquot->dq_btime = CURRENT_TIME + dquot->dq_mnt->mnt_bexp[type]; |
dquot | 450 | fs/dquot.c | static void dqput(struct dquot *dquot) |
dquot | 452 | fs/dquot.c | if (!dquot) |
dquot | 459 | fs/dquot.c | if (dquot->dq_mnt != (struct vfsmount *)NULL) { |
dquot | 461 | fs/dquot.c | wait_on_dquot(dquot); |
dquot | 462 | fs/dquot.c | if (!dquot->dq_count) { |
dquot | 464 | fs/dquot.c | printk("VFS: device %s, dquot of %s %d\n", kdevname(dquot->dq_dev), |
dquot | 465 | fs/dquot.c | quotatypes[dquot->dq_type], dquot->dq_id); |
dquot | 469 | fs/dquot.c | if (dquot->dq_count > 1) { |
dquot | 470 | fs/dquot.c | dquot->dq_count--; |
dquot | 474 | fs/dquot.c | if (dquot->dq_flags & DQ_MOD) { |
dquot | 475 | fs/dquot.c | write_dquot(dquot); /* we can sleep - so do again */ |
dquot | 476 | fs/dquot.c | wait_on_dquot(dquot); |
dquot | 480 | fs/dquot.c | if (dquot->dq_count) { |
dquot | 481 | fs/dquot.c | dquot->dq_count--; |
dquot | 487 | fs/dquot.c | static struct dquot *get_empty_dquot(void) |
dquot | 489 | fs/dquot.c | struct dquot *dquot, *best; |
dquot | 496 | fs/dquot.c | dquot = first_dquot; |
dquot | 498 | fs/dquot.c | for (cnt = 0; cnt < nr_dquots; dquot = dquot->dq_next, cnt++) { |
dquot | 499 | fs/dquot.c | if (!dquot->dq_count) { |
dquot | 501 | fs/dquot.c | best = dquot; |
dquot | 502 | fs/dquot.c | if (!(dquot->dq_flags & DQ_MOD) && !(dquot->dq_flags & DQ_LOCKED)) { |
dquot | 503 | fs/dquot.c | best = dquot; |
dquot | 513 | fs/dquot.c | dquot = best; |
dquot | 514 | fs/dquot.c | if (!dquot) { |
dquot | 519 | fs/dquot.c | if (dquot->dq_flags & DQ_LOCKED) { |
dquot | 520 | fs/dquot.c | wait_on_dquot(dquot); |
dquot | 523 | fs/dquot.c | if (dquot->dq_flags & DQ_MOD) { |
dquot | 524 | fs/dquot.c | write_dquot(dquot); |
dquot | 527 | fs/dquot.c | if (dquot->dq_count) |
dquot | 529 | fs/dquot.c | clear_dquot(dquot); |
dquot | 530 | fs/dquot.c | dquot->dq_count = 1; |
dquot | 536 | fs/dquot.c | return(dquot); |
dquot | 539 | fs/dquot.c | static struct dquot *dqget(kdev_t dev, unsigned int id, short type) |
dquot | 541 | fs/dquot.c | struct dquot *dquot, *empty; |
dquot | 550 | fs/dquot.c | dquot = *(hash(dev, id, type)); |
dquot | 551 | fs/dquot.c | while (dquot) { |
dquot | 552 | fs/dquot.c | if (dquot->dq_dev != dev || dquot->dq_id != id) { |
dquot | 553 | fs/dquot.c | dquot = dquot->dq_hash_next; |
dquot | 556 | fs/dquot.c | wait_on_dquot(dquot); |
dquot | 557 | fs/dquot.c | if (dquot->dq_dev != dev || dquot->dq_id != id) |
dquot | 559 | fs/dquot.c | if (!dquot->dq_count) |
dquot | 561 | fs/dquot.c | dquot->dq_count++; |
dquot | 565 | fs/dquot.c | return(dquot); |
dquot | 569 | fs/dquot.c | dquot = empty; |
dquot | 570 | fs/dquot.c | dquot->dq_id = id; |
dquot | 571 | fs/dquot.c | dquot->dq_type = type; |
dquot | 572 | fs/dquot.c | dquot->dq_dev = dev; |
dquot | 573 | fs/dquot.c | dquot->dq_mnt = vfsmnt; |
dquot | 574 | fs/dquot.c | put_last_free(dquot); |
dquot | 575 | fs/dquot.c | insert_dquot_hash(dquot); |
dquot | 576 | fs/dquot.c | read_dquot(dquot); |
dquot | 577 | fs/dquot.c | return(dquot); |
dquot | 586 | fs/dquot.c | struct dquot *dquot; |
dquot | 600 | fs/dquot.c | if ((dquot = dqget(dev, id, type)) != NODQUOT) { |
dquot | 601 | fs/dquot.c | lock_dquot(dquot); |
dquot | 603 | fs/dquot.c | dquot->dq_bhardlimit = dq_dqblk.dqb_bhardlimit; |
dquot | 604 | fs/dquot.c | dquot->dq_bsoftlimit = dq_dqblk.dqb_bsoftlimit; |
dquot | 605 | fs/dquot.c | dquot->dq_ihardlimit = dq_dqblk.dqb_ihardlimit; |
dquot | 606 | fs/dquot.c | dquot->dq_isoftlimit = dq_dqblk.dqb_isoftlimit; |
dquot | 609 | fs/dquot.c | if (dquot->dq_isoftlimit && |
dquot | 610 | fs/dquot.c | dquot->dq_curinodes < dquot->dq_isoftlimit && |
dquot | 611 | fs/dquot.c | dq_dqblk.dqb_curinodes >= dquot->dq_isoftlimit) |
dquot | 612 | fs/dquot.c | dquot->dq_itime = CURRENT_TIME + dquot->dq_mnt->mnt_iexp[type]; |
dquot | 613 | fs/dquot.c | dquot->dq_curinodes = dq_dqblk.dqb_curinodes; |
dquot | 614 | fs/dquot.c | if (dquot->dq_curinodes < dquot->dq_isoftlimit) |
dquot | 615 | fs/dquot.c | dquot->dq_flags &= ~DQ_INODES; |
dquot | 616 | fs/dquot.c | if (dquot->dq_bsoftlimit && |
dquot | 617 | fs/dquot.c | dquot->dq_curblocks < dquot->dq_bsoftlimit && |
dquot | 618 | fs/dquot.c | dq_dqblk.dqb_curblocks >= dquot->dq_bsoftlimit) |
dquot | 619 | fs/dquot.c | dquot->dq_btime = CURRENT_TIME + dquot->dq_mnt->mnt_bexp[type]; |
dquot | 620 | fs/dquot.c | dquot->dq_curblocks = dq_dqblk.dqb_curblocks; |
dquot | 621 | fs/dquot.c | if (dquot->dq_curblocks < dquot->dq_bsoftlimit) |
dquot | 622 | fs/dquot.c | dquot->dq_flags &= ~DQ_BLKS; |
dquot | 628 | fs/dquot.c | dquot->dq_mnt->mnt_bexp[type] = dquot->dq_btime = dq_dqblk.dqb_btime; |
dquot | 629 | fs/dquot.c | dquot->dq_mnt->mnt_iexp[type] = dquot->dq_itime = dq_dqblk.dqb_itime; |
dquot | 633 | fs/dquot.c | dquot->dq_flags |= DQ_FAKE; |
dquot | 635 | fs/dquot.c | dquot->dq_flags &= ~DQ_FAKE; |
dquot | 636 | fs/dquot.c | dquot->dq_flags |= DQ_MOD; |
dquot | 637 | fs/dquot.c | unlock_dquot(dquot); |
dquot | 638 | fs/dquot.c | dqput(dquot); |
dquot | 645 | fs/dquot.c | struct dquot *dquot; |
dquot | 655 | fs/dquot.c | if ((dquot = dqget(dev, id, type)) != NODQUOT) { |
dquot | 656 | fs/dquot.c | memcpy_tofs(dqblk, (char *)&dquot->dq_dqb, sizeof(struct dqblk)); |
dquot | 657 | fs/dquot.c | dqput(dquot); |
dquot | 684 | fs/dquot.c | struct dquot *tmp; |
dquot | 720 | fs/dquot.c | struct dquot * tmp; |
dquot | 826 | fs/dquot.c | struct dquot *transfer_from[MAXQUOTAS]; |
dquot | 827 | fs/dquot.c | struct dquot *transfer_to[MAXQUOTAS]; |
dquot | 955 | fs/dquot.c | struct dquot *dquot; |
dquot | 986 | fs/dquot.c | dquot = dqget(dev, 0, type); |
dquot | 987 | fs/dquot.c | vfsmnt->mnt_iexp[type] = (dquot) ? dquot->dq_itime : MAX_IQ_TIME; |
dquot | 988 | fs/dquot.c | vfsmnt->mnt_bexp[type] = (dquot) ? dquot->dq_btime : MAX_DQ_TIME; |
dquot | 989 | fs/dquot.c | dqput(dquot); |
dquot | 287 | include/linux/fs.h | struct dquot *i_dquot[MAXQUOTAS]; |
dquot | 175 | include/linux/quota.h | struct dquot *dq_prev; /* pointer to prev dquot */ |
dquot | 176 | include/linux/quota.h | struct dquot *dq_next; /* pointer to next dquot */ |
dquot | 177 | include/linux/quota.h | struct dquot *dq_hash_prev; /* pointer to prev dquot */ |
dquot | 178 | include/linux/quota.h | struct dquot *dq_hash_next; /* pointer to next dquot */ |
dquot | 181 | include/linux/quota.h | #define NODQUOT (struct dquot *)NULL |