Lines Matching refs:dev

67 #define DEV_FD(dev)	(*(int *)dev->d_private)
110 * @dev:
117 static int ntfs_device_unix_io_open(struct ntfs_device *dev, int flags)
123 if (NDevOpen(dev)) {
127 if (stat(dev->d_name, &sbuf)) {
128 ntfs_log_perror("Failed to access '%s'", dev->d_name);
132 NDevSetBlock(dev);
134 dev->d_private = ntfs_malloc(sizeof(int));
135 if (!dev->d_private)
141 if (!NDevBlock(dev) && (flags & O_RDWR) == O_RDWR)
143 *(int*)dev->d_private = open(dev->d_name, flags);
144 if (*(int*)dev->d_private == -1) {
153 if (NDevBlock(dev) && ((flags & O_RDWR) == O_RDWR)) {
157 r = ioctl(DEV_FD(dev), BLKROGET, &state);
160 if (close(DEV_FD(dev)))
168 NDevSetReadOnly(dev);
171 if (NDevReadOnly(dev))
177 if (fcntl(DEV_FD(dev), F_SETLK, &flk)) {
179 ntfs_log_perror("Failed to %s lock '%s'", NDevReadOnly(dev) ?
180 "read" : "write", dev->d_name);
181 if (close(DEV_FD(dev)))
182 ntfs_log_perror("Failed to close '%s'", dev->d_name);
186 NDevSetOpen(dev);
189 free(dev->d_private);
190 dev->d_private = NULL;
197 * @dev:
203 static int ntfs_device_unix_io_close(struct ntfs_device *dev)
207 if (!NDevOpen(dev)) {
209 ntfs_log_perror("Device %s is not open", dev->d_name);
212 if (NDevDirty(dev))
213 if (ntfs_fsync(DEV_FD(dev))) {
214 ntfs_log_perror("Failed to fsync device %s", dev->d_name);
222 if (fcntl(DEV_FD(dev), F_SETLK, &flk))
223 ntfs_log_perror("Could not unlock %s", dev->d_name);
224 if (close(DEV_FD(dev))) {
225 ntfs_log_perror("Failed to close device %s", dev->d_name);
228 NDevClearOpen(dev);
229 free(dev->d_private);
230 dev->d_private = NULL;
236 * @dev:
244 static s64 ntfs_device_unix_io_seek(struct ntfs_device *dev, s64 offset,
247 return lseek(DEV_FD(dev), offset, whence);
252 * @dev:
260 static s64 ntfs_device_unix_io_read(struct ntfs_device *dev, void *buf,
263 return read(DEV_FD(dev), buf, count);
268 * @dev:
276 static s64 ntfs_device_unix_io_write(struct ntfs_device *dev, const void *buf,
279 if (NDevReadOnly(dev)) {
283 NDevSetDirty(dev);
284 return write(DEV_FD(dev), buf, count);
289 * @dev:
298 static s64 ntfs_device_unix_io_pread(struct ntfs_device *dev, void *buf,
301 return pread(DEV_FD(dev), buf, count, offset);
306 * @dev:
315 static s64 ntfs_device_unix_io_pwrite(struct ntfs_device *dev, const void *buf,
318 if (NDevReadOnly(dev)) {
322 NDevSetDirty(dev);
323 return pwrite(DEV_FD(dev), buf, count, offset);
328 * @dev:
334 static int ntfs_device_unix_io_sync(struct ntfs_device *dev)
338 if (!NDevReadOnly(dev)) {
339 res = ntfs_fsync(DEV_FD(dev));
341 ntfs_log_perror("Failed to sync device %s", dev->d_name);
343 NDevClearDirty(dev);
350 * @dev:
357 static int ntfs_device_unix_io_stat(struct ntfs_device *dev, struct stat *buf)
359 return fstat(DEV_FD(dev), buf);
364 * @dev:
372 static int ntfs_device_unix_io_ioctl(struct ntfs_device *dev,
375 return ioctl(DEV_FD(dev), request, argp);