Lines Matching refs:node
479 ssize_t exfat_generic_pread(const struct exfat* ef, struct exfat_node* node, in exfat_generic_pread() argument
486 if (offset >= node->size) in exfat_generic_pread()
491 if (offset + size > node->valid_size) in exfat_generic_pread()
495 if (offset < node->valid_size) in exfat_generic_pread()
497 bytes = exfat_generic_pread(ef, node, buffer, in exfat_generic_pread()
498 node->valid_size - offset, offset); in exfat_generic_pread()
499 if (bytes < 0 || (size_t)bytes < node->valid_size - offset) in exfat_generic_pread()
503 MIN(size - bytes, node->size - node->valid_size)); in exfat_generic_pread()
504 return MIN(size, node->size - offset); in exfat_generic_pread()
507 cluster = exfat_advance_cluster(ef, node, offset / CLUSTER_SIZE(*ef->sb)); in exfat_generic_pread()
515 remainder = MIN(size, node->size - offset); in exfat_generic_pread()
533 cluster = exfat_next_cluster(ef, node, cluster); in exfat_generic_pread()
535 if (!(node->attrib & EXFAT_ATTRIB_DIR) && !ef->ro && !ef->noatime) in exfat_generic_pread()
536 exfat_update_atime(node); in exfat_generic_pread()
537 return MIN(size, node->size - offset) - remainder; in exfat_generic_pread()
540 ssize_t exfat_generic_pwrite(struct exfat* ef, struct exfat_node* node, in exfat_generic_pwrite() argument
548 if (offset > node->size) in exfat_generic_pwrite()
550 rc = exfat_truncate(ef, node, offset, true); in exfat_generic_pwrite()
554 if (offset + size > node->size) in exfat_generic_pwrite()
556 rc = exfat_truncate(ef, node, offset + size, false); in exfat_generic_pwrite()
563 cluster = exfat_advance_cluster(ef, node, offset / CLUSTER_SIZE(*ef->sb)); in exfat_generic_pwrite()
589 node->valid_size = MAX(node->valid_size, offset + size - remainder); in exfat_generic_pwrite()
590 cluster = exfat_next_cluster(ef, node, cluster); in exfat_generic_pwrite()
592 if (!(node->attrib & EXFAT_ATTRIB_DIR)) in exfat_generic_pwrite()
595 exfat_update_mtime(node); in exfat_generic_pwrite()
701 int exfat_lookup_realpath(struct exfat* ef, struct exfat_node** node, in exfat_lookup_realpath() argument
714 return exfat_lookup(ef, node, real_path); in exfat_lookup_realpath()
755 struct exfat_node *dnode, *node; in exfat_fs_readdir() local
794 while ((node = exfat_readdir(&it))) { in exfat_fs_readdir()
796 exfat_put_node(&ctxt.ef, node); in exfat_fs_readdir()
800 exfat_get_name(node, dent->name); in exfat_fs_readdir()
801 if (node->attrib & EXFAT_ATTRIB_DIR) { in exfat_fs_readdir()
805 dent->size = node->size; in exfat_fs_readdir()
807 exfat_put_node(&ctxt.ef, node); in exfat_fs_readdir()
830 struct exfat_node *dnode, *node; in exfat_fs_ls() local
853 while ((node = exfat_readdir(&it))) { in exfat_fs_ls()
854 exfat_get_name(node, name); in exfat_fs_ls()
855 if (node->attrib & EXFAT_ATTRIB_DIR) { in exfat_fs_ls()
859 printf(" %8lld %s\n", node->size, name); in exfat_fs_ls()
862 exfat_put_node(&ctxt.ef, node); in exfat_fs_ls()
876 struct exfat_node* node; in exfat_fs_exists() local
879 err = exfat_lookup_realpath(&ctxt.ef, &node, filename); in exfat_fs_exists()
883 exfat_put_node(&ctxt.ef, node); in exfat_fs_exists()
890 struct exfat_node* node; in exfat_fs_size() local
893 err = exfat_lookup_realpath(&ctxt.ef, &node, filename); in exfat_fs_size()
897 *size = node->size; in exfat_fs_size()
899 exfat_put_node(&ctxt.ef, node); in exfat_fs_size()
907 struct exfat_node* node; in exfat_fs_read() local
911 err = exfat_lookup_realpath(&ctxt.ef, &node, filename); in exfat_fs_read()
916 len = node->size; in exfat_fs_read()
918 sz = exfat_generic_pread(&ctxt.ef, node, buf, len, offset); in exfat_fs_read()
927 err = exfat_flush_node(&ctxt.ef, node); in exfat_fs_read()
929 exfat_put_node(&ctxt.ef, node); in exfat_fs_read()
935 struct exfat_node* node; in exfat_fs_unlink() local
938 err = exfat_lookup_realpath(&ctxt.ef, &node, filename); in exfat_fs_unlink()
944 if (node->attrib & EXFAT_ATTRIB_DIR) { in exfat_fs_unlink()
945 err = exfat_rmdir(&ctxt.ef, node); in exfat_fs_unlink()
949 err = exfat_unlink(&ctxt.ef, node); in exfat_fs_unlink()
955 exfat_put_node(&ctxt.ef, node); in exfat_fs_unlink()
957 return exfat_cleanup_node(&ctxt.ef, node); in exfat_fs_unlink()
959 exfat_put_node(&ctxt.ef, node); in exfat_fs_unlink()
974 struct exfat_node* node; in exfat_fs_write() local
986 err = exfat_lookup_realpath(&ctxt.ef, &node, filename); in exfat_fs_write()
991 if (node->attrib & EXFAT_ATTRIB_DIR) in exfat_fs_write()
995 if (offset > node->size) { in exfat_fs_write()
1000 sz = exfat_generic_pwrite(&ctxt.ef, node, buf, len, offset); in exfat_fs_write()
1007 err = exfat_truncate(&ctxt.ef, node, offset + sz, false); in exfat_fs_write()
1013 err = exfat_flush_node(&ctxt.ef, node); in exfat_fs_write()
1015 exfat_put_node(&ctxt.ef, node); in exfat_fs_write()