shmem.c (cb28a1bbdb4790378e7366d6c9ee1d2340b84f92) shmem.c (14fcc23fdc78e9d32372553ccf21758a9bd56fa1)
1/*
2 * Resizable virtual memory filesystem for Linux.
3 *
4 * Copyright (C) 2000 Linus Torvalds.
5 * 2000 Transmeta Corp.
6 * 2000-2001 Christoph Rohland
7 * 2000-2001 SAP AG
8 * 2002 Red Hat Inc.

--- 1499 unchanged lines hidden (view full) ---

1508 return NULL;
1509
1510 inode = new_inode(sb);
1511 if (inode) {
1512 inode->i_mode = mode;
1513 inode->i_uid = current->fsuid;
1514 inode->i_gid = current->fsgid;
1515 inode->i_blocks = 0;
1/*
2 * Resizable virtual memory filesystem for Linux.
3 *
4 * Copyright (C) 2000 Linus Torvalds.
5 * 2000 Transmeta Corp.
6 * 2000-2001 Christoph Rohland
7 * 2000-2001 SAP AG
8 * 2002 Red Hat Inc.

--- 1499 unchanged lines hidden (view full) ---

1508 return NULL;
1509
1510 inode = new_inode(sb);
1511 if (inode) {
1512 inode->i_mode = mode;
1513 inode->i_uid = current->fsuid;
1514 inode->i_gid = current->fsgid;
1515 inode->i_blocks = 0;
1516 inode->i_mapping->a_ops = &shmem_aops;
1517 inode->i_mapping->backing_dev_info = &shmem_backing_dev_info;
1518 inode->i_atime = inode->i_mtime = inode->i_ctime = CURRENT_TIME;
1519 inode->i_generation = get_seconds();
1520 info = SHMEM_I(inode);
1521 memset(info, 0, (char *)inode - (char *)info);
1522 spin_lock_init(&info->lock);
1523 INIT_LIST_HEAD(&info->swaplist);
1524
1525 switch (mode & S_IFMT) {
1526 default:
1527 inode->i_op = &shmem_special_inode_operations;
1528 init_special_inode(inode, mode, dev);
1529 break;
1530 case S_IFREG:
1516 inode->i_mapping->backing_dev_info = &shmem_backing_dev_info;
1517 inode->i_atime = inode->i_mtime = inode->i_ctime = CURRENT_TIME;
1518 inode->i_generation = get_seconds();
1519 info = SHMEM_I(inode);
1520 memset(info, 0, (char *)inode - (char *)info);
1521 spin_lock_init(&info->lock);
1522 INIT_LIST_HEAD(&info->swaplist);
1523
1524 switch (mode & S_IFMT) {
1525 default:
1526 inode->i_op = &shmem_special_inode_operations;
1527 init_special_inode(inode, mode, dev);
1528 break;
1529 case S_IFREG:
1530 inode->i_mapping->a_ops = &shmem_aops;
1531 inode->i_op = &shmem_inode_operations;
1532 inode->i_fop = &shmem_file_operations;
1533 mpol_shared_policy_init(&info->policy,
1534 shmem_get_sbmpol(sbinfo));
1535 break;
1536 case S_IFDIR:
1537 inc_nlink(inode);
1538 /* Some things misbehave if size == 0 on a directory */

--- 385 unchanged lines hidden (view full) ---

1924 inode->i_op = &shmem_symlink_inline_operations;
1925 } else {
1926 error = shmem_getpage(inode, 0, &page, SGP_WRITE, NULL);
1927 if (error) {
1928 iput(inode);
1929 return error;
1930 }
1931 unlock_page(page);
1531 inode->i_op = &shmem_inode_operations;
1532 inode->i_fop = &shmem_file_operations;
1533 mpol_shared_policy_init(&info->policy,
1534 shmem_get_sbmpol(sbinfo));
1535 break;
1536 case S_IFDIR:
1537 inc_nlink(inode);
1538 /* Some things misbehave if size == 0 on a directory */

--- 385 unchanged lines hidden (view full) ---

1924 inode->i_op = &shmem_symlink_inline_operations;
1925 } else {
1926 error = shmem_getpage(inode, 0, &page, SGP_WRITE, NULL);
1927 if (error) {
1928 iput(inode);
1929 return error;
1930 }
1931 unlock_page(page);
1932 inode->i_mapping->a_ops = &shmem_aops;
1932 inode->i_op = &shmem_symlink_inode_operations;
1933 kaddr = kmap_atomic(page, KM_USER0);
1934 memcpy(kaddr, symname, len);
1935 kunmap_atomic(kaddr, KM_USER0);
1936 set_page_dirty(page);
1937 page_cache_release(page);
1938 }
1939 if (dir->i_mode & S_ISGID)

--- 664 unchanged lines hidden ---
1933 inode->i_op = &shmem_symlink_inode_operations;
1934 kaddr = kmap_atomic(page, KM_USER0);
1935 memcpy(kaddr, symname, len);
1936 kunmap_atomic(kaddr, KM_USER0);
1937 set_page_dirty(page);
1938 page_cache_release(page);
1939 }
1940 if (dir->i_mode & S_ISGID)

--- 664 unchanged lines hidden ---