⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 multiop.c

📁 lustre 1.6.5 source code
💻 C
📖 第 1 页 / 共 2 页
字号:
                        break;                case 'L':                        newfile = POP_ARG();                        if (!newfile)                                newfile = fname;                        if (link(fname, newfile)) {                                save_errno = errno;                                perror("symlink()");                                exit(save_errno);                        }                        break;                case 'm':                        if (mknod(fname, S_IFREG | 0644, 0) == -1) {                                save_errno = errno;                                perror("mknod(S_IFREG|0644, 0)");                                exit(save_errno);                        }                        break;                case 'M':                        mmap_len = st.st_size;                        mmap_ptr = mmap(NULL, mmap_len, PROT_WRITE | PROT_READ,                                        MAP_SHARED, fd, 0);                        if (mmap_ptr == MAP_FAILED) {                                save_errno = errno;                                perror("mmap");                                exit(save_errno);                        }                        break;                case 'N':                        newfile = POP_ARG();                        if (!newfile)                                newfile = fname;                        if (rename (fname, newfile)) {                                save_errno = errno;                                perror("rename()");                                exit(save_errno);                        }                        break;                case 'O':                        fd = open(fname, O_CREAT|O_RDWR, 0644);                        if (fd == -1) {                                save_errno = errno;                                perror("open(O_RDWR|O_CREAT)");                                exit(save_errno);                        }                        break;                case 'o':                        len = get_flags(commands+1, &flags);                        commands += len;                        fd = open(fname, flags);                        if (fd == -1) {                                save_errno = errno;                                perror("open");                                exit(save_errno);                        }                        break;                case 'r':                        len = atoi(commands+1);                        if (len <= 0)                                len = 1;                        if (bufsize < len) {                                buf = realloc(buf, len + ALIGN);                                if (buf == NULL) {                                        save_errno = errno;                                        perror("allocating buf for read\n");                                        exit(save_errno);                                }                                bufsize = len;                                buf_align = (char *)((long)(buf + ALIGN) &                                                     ~ALIGN);                        }                        while (len > 0) {                                rc = read(fd, buf_align, len);                                if (rc == -1) {                                        save_errno = errno;                                        perror("read");                                        exit(save_errno);                                }                                if (rc < len)                                        fprintf(stderr, "short read: %u/%u\n",                                                rc, len);                                len -= rc;                        }                        break;                case 'R':                        for (i = 0; i < mmap_len && mmap_ptr; i += 4096)                                junk += mmap_ptr[i];                        break;                case 's':                        if (stat(fname, &st) == -1) {                                save_errno = errno;                                perror("stat");                                exit(save_errno);                        }                        break;                case 'S':                        if (fstat(fd, &st) == -1) {                                save_errno = errno;                                perror("fstat");                                exit(save_errno);                        }                        break;                case 't':                        if (fchmod(fd, 0) == -1) {                                save_errno = errno;                                perror("fchmod");                                exit(save_errno);                        }                        break;                case 'T':                        len = atoi(commands+1);                        if (ftruncate(fd, len) == -1) {                                save_errno = errno;                                printf("ftruncate (%d,%d)\n", fd, len);                                perror("ftruncate");                                exit(save_errno);                        }                        break;                case 'u':                        if (unlink(fname) == -1) {                                save_errno = errno;                                perror("unlink");                                exit(save_errno);                        }                        break;                case 'U':                        if (munmap(mmap_ptr, mmap_len)) {                                save_errno = errno;                                perror("munmap");                                exit(save_errno);                        }                        break;                case 'v':                        verbose = 1;                        break;                case 'w':                        len = atoi(commands+1);                        if (len <= 0)                                len = 1;                        if (bufsize < len) {                                buf = realloc(buf, len + ALIGN);                                if (buf == NULL) {                                        save_errno = errno;                                        perror("allocating buf for write\n");                                        exit(save_errno);                                }                                bufsize = len;                                buf_align = (char *)((long)(buf + ALIGN) &                                                     ~ALIGN);                                strncpy(buf_align, msg, bufsize);                        }                        while (len > 0) {                                rc = write(fd, buf_align, len);                                if (rc == -1) {                                        save_errno = errno;                                        perror("write");                                        exit(save_errno);                                }                                if (rc < len)                                        fprintf(stderr, "short write: %u/%u\n",                                                rc, len);                                len -= rc;                        }                        break;                case 'W':                        for (i = 0; i < mmap_len && mmap_ptr; i += 4096)                                mmap_ptr[i] += junk++;                        break;                case 'y':                        if (fsync(fd) == -1) {                                save_errno = errno;                                perror("fsync");                                exit(save_errno);                        }                        break;                case 'Y':                        if (fdatasync(fd) == -1) {                                save_errno = errno;                                perror("fdatasync");                                exit(save_errno);                        }                case 'z':                        len = atoi(commands+1);                        if (lseek(fd, len, SEEK_SET) == -1) {                                save_errno = errno;                                perror("lseek");                                exit(save_errno);                        }                        break;                case '0':                case '1':                case '2':                case '3':                case '4':                case '5':                case '6':                case '7':                case '8':                case '9':                        break;                default:                        fprintf(stderr, "unknown command \"%c\"\n", *commands);                        fprintf(stderr, usage, argv[0]);                        exit(1);                }        }        if (buf)                free(buf);        return 0;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -