Lines Matching defs:vol
74 static void ntfs_cluster_update_zone_pos(ntfs_volume *vol, u8 zone, LCN tc)
79 ntfs_cluster_set_zone_pos(vol->mft_lcn, vol->mft_zone_end,
80 &vol->mft_zone_pos, tc);
82 ntfs_cluster_set_zone_pos(vol->mft_zone_end, vol->nr_clusters,
83 &vol->data1_zone_pos, tc);
85 ntfs_cluster_set_zone_pos(0, vol->mft_zone_start,
86 &vol->data2_zone_pos, tc);
95 static void update_full_status(ntfs_volume *vol, LCN lcn)
97 if (lcn >= vol->mft_zone_end) {
98 if (vol->full_zones & ZONE_DATA1) {
99 ntfs_cluster_update_zone_pos(vol, ZONE_DATA1, lcn);
100 vol->full_zones &= ~ZONE_DATA1;
103 if (lcn < vol->mft_zone_start) {
104 if (vol->full_zones & ZONE_DATA2) {
105 ntfs_cluster_update_zone_pos(vol, ZONE_DATA2, lcn);
106 vol->full_zones &= ~ZONE_DATA2;
109 if (vol->full_zones & ZONE_MFT) {
110 ntfs_cluster_update_zone_pos(vol, ZONE_MFT, lcn);
111 vol->full_zones &= ~ZONE_MFT;
171 static int bitmap_writeback(ntfs_volume *vol, s64 pos, s64 size, void *b,
183 written = ntfs_attr_pwrite(vol->lcnbmp_na, pos, size, b);
197 * @vol: mounted ntfs volume on which to allocate the clusters
205 * @vol. @zone is either DATA_ZONE for allocation of normal clusters and
235 runlist *ntfs_cluster_alloc(ntfs_volume *vol, VCN start_vcn, s64 count,
255 if (!vol || count < 0 || start_lcn < -1 || !vol->lcnbmp_na ||
287 zone_start = vol->data1_zone_pos;
289 zone_start = vol->mft_zone_pos;
295 if (!zone_start || zone_start == vol->mft_zone_start ||
296 zone_start == vol->mft_zone_end)
299 if (zone_start < vol->mft_zone_start) {
300 zone_end = vol->mft_zone_start;
302 } else if (zone_start < vol->mft_zone_end) {
303 zone_end = vol->mft_zone_end;
306 zone_end = vol->nr_clusters;
317 if (search_zone & vol->full_zones)
320 br = ntfs_attr_pread(vol->lcnbmp_na, last_read_pos,
371 if (NVolFreeSpaceKnown(vol)) {
372 if (vol->free_clusters <= 0)
375 (long long)vol->free_clusters);
377 vol->free_clusters--;
414 ntfs_cluster_update_zone_pos(vol,
423 if (bitmap_writeback(vol, last_read_pos, br, buf, &writeback)) {
433 zone_start = vol->mft_zone_pos;
435 zone_start = vol->data1_zone_pos;
437 zone_start = vol->data2_zone_pos;
439 if (!zone_start || zone_start == vol->mft_zone_start ||
440 zone_start == vol->mft_zone_end)
456 zone_start = vol->mft_zone_start;
458 zone_start = vol->mft_zone_end;
473 vol->full_zones |= search_zone;
482 ntfs_cluster_update_zone_pos(vol,
490 zone_start = vol->data1_zone_pos;
491 zone_end = vol->nr_clusters;
492 if (zone_start == vol->mft_zone_end)
498 zone_start = vol->data2_zone_pos;
499 zone_end = vol->mft_zone_start;
510 zone_start = vol->mft_zone_pos;
511 zone_end = vol->mft_zone_end;
512 if (zone_start == vol->mft_zone_start)
537 if (bitmap_writeback(vol, last_read_pos, br, buf, &writeback)) {
554 if (bitmap_writeback(vol, last_read_pos, br, buf, &writeback))
564 ntfs_cluster_free_from_rl(vol, rl);
573 * @vol: mounted ntfs volume on which to free the clusters
578 int ntfs_cluster_free_from_rl(ntfs_volume *vol, runlist *rl)
591 update_full_status(vol,rl->lcn);
592 if (ntfs_bitmap_clear_run(vol->lcnbmp_na, rl->lcn,
606 vol->free_clusters += nr_freed;
607 if (NVolFreeSpaceKnown(vol)
608 && (vol->free_clusters > vol->nr_clusters))
610 (long long)vol->free_clusters,
611 (long long)vol->nr_clusters);
620 int ntfs_cluster_free_basic(ntfs_volume *vol, s64 lcn, s64 count)
630 update_full_status(vol,lcn);
631 if (ntfs_bitmap_clear_run(vol->lcnbmp_na, lcn,
643 vol->free_clusters += nr_freed;
644 if (vol->free_clusters > vol->nr_clusters)
646 (long long)vol->free_clusters,
647 (long long)vol->nr_clusters);
653 * @vol: mounted ntfs volume on which to free the clusters
659 * described by the attribute @na from the mounted ntfs volume @vol.
667 int ntfs_cluster_free(ntfs_volume *vol, ntfs_attr *na, VCN start_vcn, s64 count)
673 if (!vol || !vol->lcnbmp_na || !na || start_vcn < 0 ||
708 update_full_status(vol,rl->lcn + delta);
709 if (ntfs_bitmap_clear_run(vol->lcnbmp_na, rl->lcn + delta,
741 update_full_status(vol,rl->lcn);
742 if (ntfs_bitmap_clear_run(vol->lcnbmp_na, rl->lcn,
766 vol->free_clusters += nr_freed ;
767 if (vol->free_clusters > vol->nr_clusters)
769 (long long)vol->free_clusters,
770 (long long)vol->nr_clusters);